+ -
当前位置:首页 → 问答吧 → expect脚本的一点疑问

expect脚本的一点疑问

时间:2011-05-12

来源:互联网

#!/usr/bin/expect -f
#!/bin/sh
#tt.sh
set IP     [lindex $argv 0]
set PASSWD [lindex $argv 1]
set COMM   [lindex $argv 2]
set timeout -1
spawn ssh $IP  $COMM
expect "(yes/no)?" {
send "yes\r"
expect "password:"
send "$PASSWD\r"
} "password:" {send "$PASSWD\r"}
expect eof
exit下面的脚本调用上面的脚本,能否将其和在一起,我尝试写在一起无法实现。请各位高人指点一二。谢谢了!
#!/bin/sh
for((i=1;i<=50;i++))
do
/root/tt 192.168.0.112 111111 date
done

作者: gridpc   发布时间: 2011-05-12

回复 gridpc


    在sh脚本里用expect   tt.exp

作者: ubuntu_mark   发布时间: 2011-05-12

什么意思,不懂

作者: gridpc   发布时间: 2011-05-12

:dizzy:

作者: gridpc   发布时间: 2011-05-12

反过来,在bash里面使用expect就可以了。
二楼的方法也可以,不过执行过程中 ps 可以看到参数中的密码
  1. #!/bin/sh
  2. Server=.....
  3. Comm=.....
  4. Passwd=....
  5.       expect<<eof
  6.         set timeout 60
  7.         spawn ssh -t "$Server" "$Comm"
  8.             expect {
  9.                   "ssh: Could not resolve hostname : Name or service not known" {send_user "[exec echo \" ssh: Could not resolve hostname\($Server\) : Name or service not known\"]";exit}

  10.                   "not know" {send_user "[exec echo \"not know:$Server\"]";exit}
  11.                   "(yes/no)?"    {send "yes\r";exp_continue}
  12.                   "password:"     {send "[exec echo $Passwd]\r";exp_continue}
  13.                   "Permission denied, please try again." {
  14.                       send_user "[exec echo \"Error:Password is wrong:$Server\"]"
  15.                       exit
  16.                 }

  17.             }

  18. eof
复制代码

作者: dzhxc   发布时间: 2011-05-12