问题
通常,开发或者运维要面对很多的服务器,每次用ssh登录就要输入用户名和密码,除非使用无密码登录,否则谁能记得住那么多、那么长的密码呢,有没有更简单的方法呢?
方法
这个方法就是使用 expect。
1.安装 expect
sudo apt-get install expect
2.脚本
vi goto
#!/usr/bin/expect -f
# 调用expect
set timeout 1000
# hostname这些为了简便都可以写死
set hostname [lindex $argv 0]
set hostip [lindex $argv 1]
set passwd [lindex $argv 2]
# 下面为写死的
# set hostname "root"
# set hostip "192.168.0.222"
# set passwd "21213123"
spawn ssh $hostname@$hostip
# expect 是期望的返回信息匹配
expect "*assword:"
# send 的内容是我们的应答 \r 是回车 一定要有
send "$passwd\r"
# 第一次连接通常都会有的提示
# expect "*yes/no)"
# send "yes\r"
interact
写完保存
chmod +x goto
3.运行
./goto
运行可能出错,可以根据具体情况修改脚本,比如有的服务器需要通过堡垒机访问,也有的验证过程和上面的脚本的验证顺序不一样,需要结合实际情况摸索着改,直到没有错误为止,其实很好改。
本文由 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为: 2020/05/15 07:08