linux 脚本自动输入账户,分享 | CentOS 下shell 脚本自动输入账号密码

原标题:分享 | CentOS 下shell 脚本自动输入账号密码

约定:

1. >表示终端输入

2.>>表示终端输出

===========华丽丽的分割线===========

有一个项目放在了在线的git的仓库里面,因为这个项目需要在线调试每次需要把更新的代码pull到服务器里面。不想给这个服务器添加公钥,只能使用https来获取代码,存放在【/www/wwwroot/heicoder/】 目录下。然后不想每次打这么多的代码来获取更新,于是写了一个很简答的脚本update.sh。

===update.sh的代码清单===

cd /www/wwwroot/heicoder

git pull origin wuyunbin

===update.sh的代码清单===

赋予了777权限,从理论上是可以直接通过运行 【./update.sh】来获取更新。但是有一个麻烦,每次都需要输入一次账号密码。这就非常讨厌了。

84f5a55d197fc9196baf37f9017d58f0.png

经过探索发现可以使用expect来完成这个事情。

我们先安装一个expect,在centos下的安装非常简单

> sudo yum install expect

4e3e014cf1e51ab937ee4d62660736d7.png

稍等

e22048cdfd90ad6a81fb78473560d58b.png

直接【y】

35fda974d9c386e0592c3f5a7e3c8f2e.png

看到“完毕”就说明expect安装好了。

然后让我们再建一个脚本,名字不妨取做pull.sh

===pull.sh的代码清单===

#!/usr/bin/expect -f

spawn ./update.sh

expect "Username for 'https://gitee.com'"

send -- "617772977@qq.com\n"

expect "Password for 'https://617772977@qq.com@gitee.com'"

send -- "这里替换成你自己的密码就好了\n"

interact

===pull.sh的代码清单===

然后我们给【./pull.sh】赋予777权限

>chmod +777 ./pull.sh

试着运行一下【./pull.sh】

ad2bf64b99d124eaefb52c2c8e3a257b.png

成功拉取到更新,也不在提示要输入账号密码了。^_^

我们回过头来解读一下【./pull.sh】

第一行 “#!/usr/bin/expect -f”:指示了这个脚本要用哪个程序来运行;

第二行:“spawn ./update.sh”:是重点,在EXPECT下启动了一个我们要执行的程序;

第三行:“expect "Username for 'https://gitee.com'"”也是重点,我们要告诉expect,当什么信息出现时需要expect帮助我们完成交互;

第四行:“send -- "617772977@qq.com\n"”就是出现输入用户名的提示时,要发送的内容;

第五,六行参考第三四行;

第七行:“interact ”是保持交互,不要退出。没有这句的话,完成后会自动退出。

PS: pull.sh 脚本中有一个地方需要注意到:

send -- "617772977@qq.com\n" 这里,“ -- ”横线和后面的邮箱之间是有一个空格的。返回搜狐,查看更多

责任编辑: