自动化登录跳板机和服务器shell脚本

您所在的位置:网站首页 跳板机登录账号密码协议 自动化登录跳板机和服务器shell脚本

自动化登录跳板机和服务器shell脚本

2024-07-17 02:36| 来源: 网络整理| 查看: 265

一、背景

工作日常中时常需要登录跳板机和服务器去部署程序、查询日志等,但每次登录服务器需要输入账号密码,且甚至有时还需要二次验证,过程比较麻烦,为了解决时间提高效率,故而采用expect脚本程序实现自动化的登录。

二、expect是什么?

expect是一个免费的编程工具,用来实现自动的交互式任务,而无需人为干预。简言之,expect就是一套用来实现自动交互功能的软件。

在日常工作中,我们时常从终端中需手动输入执行命令、启动程序后,再进行一系列操作,而利用expect,则可以根据程序的提示,模拟标准输入提供给程序,从而实现自动化交互执行,可减少一部分手工操作执行环节。

三、通过静态密码登录跳板机

1.创建脚本login.sh

#!/usr/bin/expect -f set ip 100.75.29.10 set port 22 set username rd set password rd1234 spawn ssh -p $port $username@$ip expect { "*yes/no*" { send "yes\n"; exp_continue; } "*password:" { send "$password\r"; } } interact

2.运行脚本

方式一:./login.sh

jdbk@jdbkdeMacBook-Pro usr % ./login.sh spawn ssh -p 22 [email protected] [email protected]'s password: Last login: Mon Oct 26 20:36:43 2020 from 100.66.172.62 rd@yzdev-vm-centos7-029010:~$

方式二:expect login.sh

jdbk@jdbkdeMacBook-Pro usr % expect login.sh spawn ssh -p 22 [email protected] [email protected]'s password: Last login: Mon Oct 26 20:51:46 2020 from 100.66.173.74 rd@yzdev-vm-centos7-029010:~$

注意:

不能用sh login.sh来执行expect的程序,因为expect用的不是bash,否则会提示找不到命令的错误,如下:

jdbk@jdbkdeMacBook-Pro usr % sh login.sh login.sh: line 8: spawn: command not found couldn't read file "{": no such file or directory login.sh: line 10: *yes/no*: No such file or directory login.sh: line 11: send: command not found login.sh: line 12: exp_continue: command not found login.sh: line 13: syntax error near unexpected token `}' login.sh: line 13: ` }' jdbk@jdbkdeMacBook-Pro usr % 四、通过密钥文件登录跳板机

1.创建脚本k8s.sh

#!/usr/bin/expect -f set ip 100.75.20.4 set port 22 set username root spawn ssh -i 密钥路径 $username@$ip -p $port expect { "*yes/no*" { send "yes\n"; } } interact

2.运行脚本

同login.sh脚本一样,不可使用sh k8s.sh的方式,此处不再赘述。

  五、通过动态密码登录跳板机

1.创建脚本k8s.sh

#!/usr/bin/expect set username 个人账号--机器ID set server blj.jdb-dev.com set port 22 set password 个人密码 set six_code [lindex $argv 0] spawn ssh -p $port $username@$server expect { "*yes/no*" { send "yes\n"; exp_continue; } "*password:" { send "$password$six_code\n"; } } interact

2.运行脚本

同login.sh脚本一样,不可使用sh blj.sh的方式。

方式一:./blj.sh  OTP动态密码

jdbk@jdbkdeMacBook-Pro usr % ./blj.sh 456327

方式二:expect blj.sh  OTP动态密码

jdbk@jdbkdeMacBook-Pro usr % expect blj.sh 637182

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3