在 Linux 下做 telnet 批量操作,通常有三种常见场景和做法。下面按「实用性」从高到低给你说明。
expect 批量 telnet(最常用 ✅)telnet 本身不支持脚本输入密码/交互,所以要配合 expect。
yum install expect # CentOS
apt install expect # Ubuntu
#!/usr/bin/expect
set host [lindex $argv 0]
set port [lindex $argv 1]
spawn telnet $host $port
expect "login:"
send "admin\r"
expect "Password:"
send "123456\r"
expect "#"
send "show version\r"
send "exit\r"
interact
for ip in 192.168.1.1 192.168.1.2 192.168.1.3; do
./telnet.sh $ip 23
done
telnet + here document(简单但不支持密码)适合 无需登录认证 的设备(如某些内网服务)。
telnet 192.168.1.1 23 <<EOF
command1
command2
exit
EOF
❌ 缺点:遇到 login / password 会失败
nc / bash 伪装 telnet(进阶)exec 3<>/dev/tcp/192.168.1.1/23
echo "command" >&3
cat <&3
适合 纯 TCP 协议测试,不是真正 telnet 交互。
✅ 不要长期用 telnet
✅ 推荐替代:
ssh + ansible(最推荐)expect + sshnetmiko / paramiko(Python)如果你告诉我:
我可以直接给你 可用脚本。