Shell脚本实现自动登录服务器
1.登录脚本
login_server.sh
#!/bin/bash# ReferenceLink:https://yq.aliyun.com/articles/516347#show all host infos of serverList.txtif[[-f./serverList.txt]]thenhostNum=`cat./serverList.txt|wc-l`elseecho"No .serverList.txt in ./ dir, please create it and add server infos."exitfiwhile[True]doecho-e"+++++++++++ Host List ++++++++++++++++"awk-F' ''{printf("%3d -> %s@%s\n", NR,$1,$2)}'./serverList.txtecho-e"++++++++++++++++++++++++++++++++++++++"echo-e"Enter hostID at first column."echo-e"Enter q or Q to quit."readhostIDif[["$hostID"=='q']]||[["$hostID"=='Q']]thenexitelif[[$hostID-lt1]]||[[$hostID-gt$hostNum]]thenecho"Wrong hostID is selected, Only$hostNumhosts are listed, please check."continueelsebreakfidoneuser=""host=""passwd=""eval$(awk-vhostID=$hostID -F' ''{if (NR==hostID) {printf("user=%s;host=%s;passwd=%s;",$1,$2,$3);}}'./serverList.txt)#echo $user, $host, $passwdecho"login in$user@$host"expect-c" set timeout 30 spawn ssh$user@$hostexpect {\"*yes/no\"{ send\"yes\r\"; exp_continue }\"*?assword:\"{ send\"$passwd\r\"} } interact "2.服务器列表
serverList.txt
第一列:系统用户名称;
第二列:服务器ip地址;
第三列:服务器密码。
test1 192.168.1.222 123456 bt 192.168.1.101 123456 st 192.168.1.103 123456