加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Shell 交互输入

发布时间:2020-12-15 16:30:50 所属栏目:安全 来源:网络整理
导读:场景描述 如果脚本中使用ssh 登录服务器,如何用shell实现自动输入密码呢? 其实有三种办法: 1.重定向 2.管道 前两种前提条件是指令必须有参数设置密码的输入方式,比如sudo -S 表示从标准输入中读取密码, 但是ssh 没有任何参数表示输入密码,只能使用第三种办

场景描述

如果脚本中使用ssh 登录服务器,如何用shell实现自动输入密码呢? 其实有三种办法:

1.重定向

2.管道

前两种前提条件是指令必须有参数设置密码的输入方式,比如sudo -S 表示从标准输入中读取密码, 但是ssh 没有任何参数表示输入密码,只能使用第三种办法:

3. expect

主要适用于交互脚本中,详细参见1,内容比较多,这里只写如何解决自动用ssh登录服务器

  • 和shell一样,需要安装expect 解释器: sudo apt-get install expect
  • 新建的文件以*.exp结尾,需要包含 #!/bin/expect
  • 运行: expect *.exp
#!/bin/expect
set timeout 15
spawn ssh root@ip
expect {
    "(yes/no)" { send "yesr"; exp_continue }
    "*password:" { send "123r"}
}
interact

解释如下:

  • 设定超时时间15s
  • spawn是expect的语句,执行命令前都要加这句;
  • expect  上次的命令是否包含password:字符串
  • send 执行交互动作,与手工输入密码类似,将密码发送出去
  • interact 执行完成后,把控制权交给控制台

shell 中如何嵌入或调用expect语言

  • shell 中嵌入expect有点复杂,这里不做介绍
  • shell 中可以通过 expect test.exp 调用

参考

参考1 详细的描述expect的使用 语法
参考2 
参考3

每天都有不同的任务,任务中包含中各种不同的知识点,唯有各种知识点理解清楚,才能够快速的完成大的任务.
新换的桌面系统,还是比较清新的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读