前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Shell 交互输入

Shell 交互输入

作者头像
程序手艺人
发布2019-02-21 15:48:34
1.9K0
发布2019-02-21 15:48:34
举报
文章被收录于专栏:程序手艺人程序手艺人

场景描述

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

1.重定向

2.管道

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

3. expect

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

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

解释如下:

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

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

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

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

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

这里写图片描述
这里写图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年08月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 场景描述
    • 1.重定向
      • 2.管道
        • 3. expect
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档