前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >脚本链接 ssh 自动输入密码

脚本链接 ssh 自动输入密码

作者头像
f_zyj
发布2019-05-27 09:01:55
4.4K0
发布2019-05-27 09:01:55
举报
文章被收录于专栏:ACM小冰成长之路

首先安装 expectexpectexpect,因为默认是没有安装这个的,UbuntuUbuntuUbuntu 系统可以直接通过 sudo apt−get install expectsudo\ apt-get\ install\ expectsudo apt−get install expect 来安装,然后写好 expectexpectexpect 脚本,假如说叫做 login−via−sshlogin-via-sshlogin−via−ssh,如果脚本没有参数的话,直接 expect login−via−sshexpect\ login-via-sshexpect login−via−ssh 就可以了,注意必须用 expectexpectexpect 来运行这个脚本,其他 shellshellshell 工具是无法解析这个脚本的。

不过我这里写的 login−via−sshlogin-via-sshlogin−via−ssh 脚本有一些参数:

代码语言:javascript
复制
Usage: expect login-via-ssh username password hostname realip script

主要功能是通过 sshsshssh 链接到用户名为 usernameusernameusername,密码为 passwordpasswordpassword 的服务器,服务器的主机名叫做 hostnamehostnamehostname,真实的 IPIPIP 地址为 realiprealiprealip,链接到这个服务器后执行 scriptscriptscript 脚本。

代码语言:javascript
复制
#!/usr/bin/expect -f

set timeout 10
set username [lindex $argv 0]
set password [lindex $argv 1]
set hostname [lindex $argv 2]
set realip   [lindex $argv 3]
set script   [lindex $argv 4]

spawn ssh -l $username $realip "echo '$password' | sudo -S ~/$script $hostname"

expect {
    "(yes/no)?" {
        send "yes\n"
        expect "password:"
        send "$password\n"
    }
    "password:" {
        send "$password\n"
    }
}

interact

这里用来实现自动输入的是 expectexpectexpect 部分,当检测到 (yes/no)?(yes/no)?(yes/no)? 的时候,会自动输入 yesyesyes,检测到 password:password:password: 时会自动输入 passwordpasswordpassword。

另外,spawnspawnspawn 后双引号里的内容,是要在 sshsshssh 远程链接到的服务器上执行的,因为 sudosudosudo 权限需要键入密码,所以通过 echoechoecho 的方式来进行自动输入密码。

说到这里,就不得不说的是,常见的自动输入密码的方法有三种,但是对于 sshsshssh 和 scpscpscp 这种命令只能通过 expectexpectexpect 来进行自动输入密码的操作。

xscpxscpxscp 脚本:

代码语言:javascript
复制
#!/usr/bin/expect -f
# Usage: expect xscp a b c

set timeout 10
set source [lindex $argv 0]
set target [lindex $argv 1]
set passwd [lindex $argv 2]

spawn scp $source $target

expect {
    "(yes/no)?" {
        send "yes\n"
        expect "password:"
        send "$passwd\n"
    }
    "password:" {
        send "$passwd\n"
    }
}

interact
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年01月01日,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档