mingche 发表于 2018-8-26 10:14:36

在shell脚本嵌入except代码实现免交互自动化

linux expect详解(ssh自动登录)
  shell脚本实现scp自动登录远程服务器示例:
#!/bin/bash  

  

  
#嵌入脚本
  
/usr/bin/expect "            //进程返回ftp>时
  
send "binary\r"         //向进程输入binary\r
  
expect "ftp> "            //进程返回ftp>时
  
send "get test.tar.gz\r"//向进程输入get test.tar.gz\r
  这段代码的作用是登录到ftp服务器ftp ftp.uu.net上,并以二进制的方式下载服务器上的文件test.tar.gz。程序中有详细的注释。
4.interact
  到现在为止,我们已经可以结合spawn、expect、send自动化的完成很多任务了。但是,如何让人在适当的时候干预这个过程了。比如下载完ftp文件时,仍然可以停留在ftp命令行状态,以便手动的执行后续命令。interact可以达到这些目的。下面的demo在自动登录ftp后,允许用户交互。
spawn ftp ftp.test.com  
expect "Name"
  
send "user\r"
  
expect "Password:"
  
send "123456\r"
  
interact
解决方法
  上文中提到:
  如何从机器A上ssh到机器B上,然后执行机器B上的命令?如何使之自动化完成?
  下面一段脚本实现了从机器A登录到机器B,然后执行机器B上的pwd命令,并停留在B机器上,等待用户交互。具体含义请参考上文。
#!/home/tools/bin/64/expect -f  
set timeout -1
  
spawn ssh $BUser@$BHost
  
expect"*password:" { send "$password\r" }
  
expect"$*" { send "pwd\r" }interact
  注:此文章属懒惰的肥兔原创,版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接
  若您觉得这篇文章还不错请点击下右下角的推荐,有了您的支持才能激发作者更大的写作热情,非常感谢。
  如有问题,可以通过lzrabbit@126.com联系我。
  原文链接:https://www.cnblogs.com/lzrabbit/p/4298794.html


页: [1]
查看完整版本: 在shell脚本嵌入except代码实现免交互自动化