大佬教程收集整理的这篇文章主要介绍了linux – Expect脚本错误发送:Spawn id exp4在执行时未打开,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
信用额度:https://serverfault.com/users/30957/glenn-jackman
@Glenn对不起!只是道歉,我的意思是!
对不起Glenn您的代码需要进行一些更改,我在这里添加并使其工作.谢谢你!抱歉我的粗鲁.
以下是其他需要它的人的固定代码.您可以将IP放在文本文件中,然后将cat放在servers_addresses中.像servers_addresses =(‘cat ip_list.txt’)
在IP列表中添加IP,如10.10.10.1 10.10.10.2 10.10.10.3
如果需要还有更多例子.
运行命令:
./test.sh "sudo cat /etc/hosts"
运行多个命令
./test.sh "sudo cat /etc/hosts & /etc/init.d/network status"
@L_673_9@和替换
./test.sh "sed -i -e 's/search_string/replaCE_StriNG/g' /tmp/Filename.txt"
完整代码:
#!/bin/bash (( $# != 1 )) && { echo >&2 "Usage: $0 \"[COMMAND]\""; exit 1; } servers_addresses=( 10.10.10.10 192.168.10.1 ) for server_address in ${servers_addresses[@]}; do expect <<EOF set passwds { password1 password2 password3 } set i 0 spawn ssh -t root@$server_address "$*" expect { "Are you sure you want to conTinue connecTing (yes/no)?" { send "yes\r"; exp_conTinue } "s password:" { send "[lindex \$passwds \$i]\r"; incr i; exp_conTinue } eof } EOF done
我正在尝试运行此脚本,但在修改时出现了不同的错误.这是代码和输出.请帮忙.
使用调试信息更新帖子的末尾
#!/bin/bash (( $# != 1 )) && { echo >&2 "Usage: $0 \"[COMMAND]\""; exit 1; } servers_addresses=(10.10.10.10 ) for server_address in ${servers_addresses[@]}; do expect <<EOF spawn ssh -t root@$server_address "$*" expect -timeout 2 "Are you sure you want to conTinue connecTing (yes/no)?" { send "yes\n" } expect "s password:" { send "Correct_password\n" } expect "s password:" { send "Wrong_password_22222\n" } expect "s password:" { send "Wrong_password_33333\n" } expect eof EOF done
输出如下:
goldberg188@Test-Server ~$./test.sh "sudo cat /etc/hosts" spawn ssh -t root@10.10.10.10 sudo cat /etc/hosts root@10.10.10.10's password: # Do not remove the following line,or varIoUs programs # that require network functionality will fail. 10.10.10.10 TEST-004 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 Connection to 10.10.10.10 closed. expect: spawn id exp4 not open while execuTing "expect "s password:" { send "Wrong_password_33333\n" }"
expect "s password:" { send "Wrong_password_11111\n" } expect "s password:" { send "Correct_password\n" } expect "s password:" { send "Wrong_password_33333\n" } goldberg188@Test-Server ~$./test.sh "sudo cat /etc/hosts" spawn ssh -t root@10.10.10.10 sudo cat /etc/hosts root@10.10.10.10's password: # Do not remove the following line,or varIoUs programs # that require network functionality will fail. 10.10.10.10 TEST-004 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 Connection to 10.10.10.10 closed. expect: spawn id exp4 not open while execuTing "expect eof"
expect "s password:" { send "Wrong_password_11111\n" } expect "s password:" { send "Wrong_password_22222\n" } expect "s password:" { send "Correct_password\n" } goldberg188@Test-Server ~$./test.sh "sudo cat /etc/hosts" spawn ssh -t root@10.10.10.10 sudo cat /etc/hosts root@10.10.10.10's password: # Do not remove the following line,or varIoUs programs # that require network functionality will fail. 10.10.10.10 TEST-004 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 Connection to 10.10.10.10 closed.
忽略编辑:我知道如何一次运行2个命令.
更新:调试信息 – 修改为
exp_internal 1 expect "s password:" { send "Wrong_password_11111\n" } expect "s password:" { send "Correct_password\n" } expect "s password:" { send "Wrong_password_33333\n" }
输出:
goldberg188@Test-Server ~$./test.sh "sudo cat /etc/host" spawn ssh -t root@10.10.10.10 sudo cat /etc/host root@10.10.10.10's password: expect: does "root@10.10.10.10's password: " (spawn_id exp4) match glob pattern "s password:"? yes expect: set expect_out(0,String) "s password:" expect: set expect_out(spawn_id) "exp4" expect: set expect_out(buffer) "root@10.10.10.10's password:" send: sending "Wrong_password_11111\n" to { exp4 } expect: does " " (spawn_id exp4) match glob pattern "s password:"? no expect: does " \r\n" (spawn_id exp4) match glob pattern "s password:"? no Permission denied,please try again. root@10.10.10.10's password: expect: does " \r\nPermission denied,please try again.\r\r\nroot@10.10.10.10's password: " (spawn_id exp4) match glob pattern "s password:"? yes expect: set expect_out(0,String) "s password:" expect: set expect_out(spawn_id) "exp4" expect: set expect_out(buffer) " \r\nPermission denied,please try again.\r\r\nroot@10.10.10.10's password:" send: sending "Correct_password\n" to { exp4 } expect: does " " (spawn_id exp4) match glob pattern "s password:"? no expect: does " \r\n" (spawn_id exp4) match glob pattern "s password:"? no cat: /etc/host: No such file or directory Connection to 10.10.10.10 closed. expect: does " \r\ncat: /etc/host: No such file or directory\r\r\nConnection to 10.10.10.10 closed.\r\r\n" (spawn_id exp4) match glob pattern "s password:"? no expect: read eof expect: set expect_out(spawn_id) "exp4" expect: set expect_out(buffer) " \r\ncat: /etc/host: No such file or directory\r\r\nConnection to 10.10.10.10 closed.\r\r\n" expect: spawn id exp4 not open while execuTing "expect eof"
以上是大佬教程为你收集整理的linux – Expect脚本错误发送:Spawn id exp4在执行时未打开全部内容,希望文章能够帮你解决linux – Expect脚本错误发送:Spawn id exp4在执行时未打开所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。