公司项目采用C程序开发,有些设置需要登录到telnet上面去操作,但是现场部署上线之后,有一百多台虚机,如果全部手动去操作,太麻烦了🙃…使用 shell 写个脚本,就可以自动去登录操作了。

登录不同的主机,可以有两种方式,一种把 IP 地址放在字符串中,另外一种放在文件中。

读取字符串方式

把 IP 地址放在字符串中,这种适合 IP 地址少的,如果 IP 地址太多,写代码的时候比较麻烦。

配置 IP 和 PORT

  • 字符串之间用空格隔开
hosts=("192.168.1.48" "192.168.1.49" "192.168.1.50" "192.168.1.51" "192.168.1.52")
port=("12041" "12042" "12043" "12044" "12045")

循环登录

#!/bin/bash

for (( i=0;i<${#hosts[*]}; i++))
do
(
sleep 1
echo -e "${username}\r\n"
sleep 1
echo -e "${password}\r\n"
sleep 1
# 这里可以进行登录之后的操作
sleep 1
echo -e "exit\r\n"
)|timeout 10 telnet ${hosts[$i]} ${port[$i]}
done

读取文件方式

如果要登录的服务器太多,最好是把 IP 都放入一个文件中,每行一个 IP 和 PORT,然后读取文件。

写入文件

  • hosts.txt
192.168.1.48,12041
192.168.1.49,12042

读取文件

#!/bin/bash

for ips in $hosts
do
(
echo -e "${username}\r\n"
echo -e "${password}\r\n"
echo -e ":display-icp-state;\r\n"
sleep 1
echo -e "exit\r\n"
) | telnet ${ips%,*} ${ips#*,}
# 截取,前面的部分
#echo ${ips%,*}
# 截取,后面的部分
#echo ${ips#*,}
done