这个脚本为啥不能登录主机呢?问题出在什么地方呢? 另外登录以后,测试远程主机是否存在某目录,有则继续执行expect脚本怎么写啊? #!/usr/bin/perl use Expect; my $IP=$ARGV[0]; my $passwd='mima'; my $cmd=ls; my $exp = Expect->spawn(ssh, $IP) or die("can not spawning") ; $exp->expect(1, [ qr/(yes\/no)?/i, sub { my $self = shift; $self->send("yes\n"...
by 鲤鱼馒头 - Perl - 2008-04-24 21:12:58 阅读(1950) 回复(7)
记得有一次 IDC 电力割接,托管在那儿的近百台服务器需要做这个关机的操作 想一想 每台登入后输入halt 或者shutdown -h now关掉的话 一台花一分钟,关掉这些机器就得1个小时 这个任务是非常艰巨的,工作量比较大........ 没办法,怕直接掉电机器起不来,结果安排了好几位运维的兄弟,那些人负责那几台,那些负责检查......... 当然,如果所有的服务器SSH登陆都信任一个机器,在这个机器直接执行ssh IP地址 shutdown -h now可以了...
有下面的脚本: #!/usr/bin/tclsh package require Expect ..... 但是执行的时候总是报错: can't find package Expect while executing "package require Expect" 请指教,谢谢。。。 我已经安装了expect,而且可以执行expect命令,但是在tcl脚本中就是不能执行这个expect,不知道为什么啊?
用expect ssh上一台linux 程序可以正确的运行成功 一会儿就ssh就断开 ip和密码用*代替了 [code] #!/usr/bin/expect -f set IP "*.*.*.*" set LOGIN "root" set PASSWD "*" spawn ssh $IP -l $LOGIN expect "*password:" send "$PASSWD\r" expect eof exit [/code]
脚本名字:123.sh 作用:运行expect 123.sh后,能够自动登录到ip为125.1.1.1-30这30台机器运行一些相同的命令,省去了每台机器登录重复敲命令,浪费时间 #!/user/bin/expect -f for {set i 1} {$i<=30} {incr i} { spawn ssh -l root 125.1.1.$i expect "*password: " sleep 5 send "QwErT\r" send "find / -name hao.txt\r" interact } 但是我运行后发现只能登陆第一台机器,也就是125.1.1.1运行命令find / -name hao.txt, 后面的ip...
我在用Expect写一个Script,遇到一个问题需要对一个长字符串进行处理并取出其中的几个小段。expect 好像本身不具备这种功能,于是我尝试用Perl写了一个子程序,用正则表达式运算很容易就实现了。现在的问题是:我不知如何在Expect中调用Perl子程? 哪位高手可以指点一二? 谢了!!!!!!!!
是否能下列x.x.x.x利用變數的方式 讀入例如/ETC/HOSTS 分別登入不同台SERVER 執行COMMAND #!/usr/bin/expect spawn telnet x.x.x.x expect "login:" send "pom\r" expect "Password:" send "123456\r" expect "$" send "cd /home/p ...
我用的activetcl for windows 8.4.19.0 , 写了个最简单的expect脚本老是有问题: #!/bin/sh # \ exec tclsh "$0" ${1+"$@"} package require Tcl package require Tk package require Expect spawn ssh2 root@server01 expect "root's password:"; send "111111\r" expect "*#"; send "ls\r" expect "*#"; send "exit\r" 可以是它始终报错 : C:\Program Files\active\bin>tclsh c:\ssh_logon.tcl send: spawn id exp4 not ...