shell中使用expect命令进行远程执行命令脚本
技术  /  管理员 发布于 7年前   137
expect是用来实现自动交互功能的工具之一,使用expect-send来实现交互过程。
注意:
1、脚本的执行方法与bash shell不一样,比如:expect example.sh
2、向一个脚本传递参数时,bash shell是使用$1,$2...来接收参数的;而expect则将脚本的执行参数保存在数组$argv中,在脚本中一般将其赋值给变量:set 变量名 [lindex $argv 参数]
#!/usr/bin/expectset ip [lindex $argv 0]set password [lindex $argv 1]set timeout 2spawn telnet $ipexpect "*femto login:"send "root\r"expect "*Password:"send "$password\r"# 进入指定的机器后,就可执行相应的命令或者脚本interact#expect eof
注意:若登陆后便退出远程终端,则写expect eof
即可。
3、执行脚本
expect autologin.sh 192.168.1.240 root
很多时候,需要用expect命令实现登录远端服务器执行简单命令,诸如:重启服务器,ftp,ls, scp等命令。 里面涉及到输入密码的交互式场景,这个时候expect命令的巨大功效就出来了,下面是一个比较经典脚本实现:
#!/usr/bin/tclshpackage require Expectset host_ip1 [lindex $argv 0]set host_usr [lindex $argv 1]set host_pwd [lindex $argv 2]spawn ssh $host_usr@$host_ip1set timeout 60expect { -re "password" {send "$host_pwd\n"} -re "yes/no" {send "yes\n";exp_continue} # 有的时候输入几次密码来确认,exp_continue}expect "#"send "ls /home/${host_user} | tee -a /tmp/ls.txt \r"expect "#"send "exit\r"expect eof
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对AIDI的支持。如果你想了解更多相关内容请查看下面相关链接
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号