更新时间:2022-10-01 14:26:05
版本v1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
#!/bin/bash ####################### #author: Bovin ####################### #show all host infos of serverList.txt if [[ -f $HOME/.serverList.txt ]]
then hostNum=` cat $HOME/.serverList.txt | wc -l`
else echo "No .serverList.txt in $HOME dir, please create it and add server infos."
exit
fi while [ True ]
do echo -e "+++++++++++ Host List ++++++++++++++++"
awk -F ' ' '{printf("%3d -> %s@%s\n", NR,$1,$2)}' $HOME/.serverList.txt
echo -e "++++++++++++++++++++++++++++++++++++++"
echo -e "Enter hostID at first column."
echo -e "Enter q or Q to quit." read hostID
if [[ "$hostID" == 'q' ]] || [[ "$hostID" == 'Q' ]]
then
exit elif [[ $hostID -lt 1 ]] || [[ $hostID -gt $hostNum ]]
then
echo "Wrong hostID is selected, Only $hostNum hosts are listed, please check."
continue
else
break
fi
done user= ""
host= ""
passwd = ""
eval $( awk - v hostID=$hostID -F ' ' '{if (NR==hostID) {printf("user=%s;host=%s;passwd=%s;",$1,$2,$3);}}' $HOME/.serverList.txt)
#echo $user, $host, $passwd echo "login in $user@$host"
expect -c " set timeout 30
spawn ssh $user@$host
expect {
\"* yes /no \" { send \" yes \r\"; exp_continue }
\"*?assword:\" { send \"$ passwd \r\" }
}
interact
" |
说明:此脚本读取.serverList文件,.serverList文件存有服务器信息。内容如下:
1
2
3
|
qindy 10.24.34.69 qindy root 10.24.181.140 passWord wrf 10.24.185.18 wrf |
第一列:系统用户名称;第二列:服务器ip地址;第三列:服务器密码。
版本v2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#!/bin/bash ####################### #author: Bovin ####################### #show all host infos of serverList.txt if [[ -f /root/exec/iplist .txt ]]
then hostNum=` cat /root/exec/iplist .txt | wc -l`
else echo "No iplist in dir, please create it and add server infos."
exit
fi while [ True ]
do echo -e "+++++++++++ Host List ++++++++++++++++"
awk -F ' ' 'BEGIN {print "ID\tServerName\tUser@ServerIp" }{ printf ( "%2d -> %s %s@%s\n" , NR,$1,$2
,$3)}' /root/exec/iplist .txt
echo -e "++++++++++++++++++++++++++++++++++++++"
echo -e "Enter hostID at first column."
echo -e "Enter q or Q to quit." read hostID
if [[ "$hostID" == 'q' ]] || [[ "$hostID" == 'Q' ]]
then
exit elif [[ $hostID -lt 1 ]] || [[ $hostID -gt $hostNum ]]
then
echo "Wrong hostID is selected, Only $hostNum hosts are listed, please check."
continue
else
break
fi
done servername= ""
user= ""
host= ""
passwd = ""
eval $( awk - v hostID=$hostID -F ' ' '{ if (NR==hostID) { printf ("servername=%s;user=%s;host=%s;pas
swd=%s;",$1,$2,$3,$4);}}' /root/exec/iplist .txt)
#echo $user, $host, $passwd echo "logining $servername by $user@$host"
expect -c " set timeout 30
spawn ssh $user@$host
expect {
\"* yes /no \" { send \" yes \r\"; exp_continue }
\"*?assword:\" { send \"$ passwd \r\" }
}
interact
" |
说明:此脚本读取iplist.txt文件,iplist.txt文件存有服务器信息。内容如下:
1
2
3
|
centos-test1 root 172.16.172.151 yunjikeji centos-test2 root 172.16.172.152 yunjikeji centos-test3 root 172.16.172.153 yunjikeji |
第一列:服务器名称;第二列:系统用户名;第三列:服务器ip地址;第四列:服务器密码。