介绍
如何在shell中使用期望命令进行远程执行命令脚本?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<强>预计是用来实现自动交互功能的工具之一,使用expect-send来实现交互过程。强>
注意:
1,脚本的执行方法与bash shell不一样,比如:<代码>期待的例子。sh 代码>
2,向一个脚本传递参数时,bash shell是使用$ 1,$ 2…来接收参数的;而期望则将脚本的执行参数保存在数组$ argv中,在脚本中一般将其赋值给变量:<代码>设置变量名[lindex $ argv参数)代码>
# !/usr/bin/期望 set ip [lindex argv 美元;0] set password [lindex argv 美元;1] set timeout 2 spawn telnet $ ip expect “* femto 登录:“ send “根\ r" expect “*密码:“ send “密码\ r"美元; #,进入指定的机器后,就可执行相应的命令或者脚本 交互 # expect eof
注意:若登陆后便退出远程终端,则写<代码>期待eof> 代码即可。
3,执行脚本
expect autologin.sh 192.168.1.240 根
很多时候,需要用期望命令实现登录远端服务器执行简单命令,诸如:重启服务器,ftp, ls, scp等命令。里面涉及到输入密码的交互式场景,这个时候期望命令的巨大功效就出来了,下面是一个比较经典脚本实现:
# !/usr/bin/tclsh package require 期望 set host_ip1 [lindex argv 美元;0] set host_usr [lindex argv 美元;1] set host_pwd (lindex argv 美元;2) spawn ssh  host_usr@ host_ip1美元 set timeout 60 expect { -re 才能“password", {send “host_pwd \ n"美元;}, -re 才能“是的/no", {send “是的\ n" exp_continue}, #,有的时候输入几次密码来确认,exp_continue } expect “#”; send “ls /home/$ {host_user}, |, tee -a /tmp/ls.txt \ r" expect “#”; send “退出\ r" expect eof
看完上述内容,你们掌握如何在shell中使用期望命令进行远程执行命令脚本的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!