在 Linux 下,telnet 本身不支持批量操作,因为它是一个交互式协议客户端。但可以通过配合脚本或工具来实现“批量登录 / 批量执行命令”。下面按常见场景给你几种实用方案。
expect 可以模拟人工输入,实现 telnet 批量操作。
yum install expect -y # CentOS
apt install expect -y # Ubuntu
#!/usr/bin/expect
set host [lindex $argv 0]
set user [lindex $argv 1]
set pass [lindex $argv 2]
spawn telnet $host
expect "login:"
send "$user\r"
expect "Password:"
send "$pass\r"
expect "#"
send "ls\r"
send "exit\r"
interact
for ip in 192.168.1.10 192.168.1.11 192.168.1.12
do
./telnet.exp $ip admin 123456
done
telnet 192.168.1.10 <<EOF
admin
123456
ls
exit
EOF
⚠️ 缺点:
如果你的操作是固定命令,nc 更稳:
echo -e "user admin\npass 123456\nls\nexit" | nc 192.168.1.10 23
批量:
for ip in $(cat ip.txt)
do
echo -e "ls\nexit" | nc $ip 23
done
ssh user@host "command"
ansible all -i hosts -m command -a "uptime"
| 问题 | 原因 |
|---|---|
| 卡住 | 没发 \r |
| 登录失败 | 提示符不匹配 |
| 执行中断 | 网络延迟 |
| 不安全 | telnet 明文传输 |
✅ 临时测试:expect
✅ 批量运维:ansible / ssh
❌ 生产环境:不要用 telnet
如果你能告诉我:
我可以直接给你一份可用脚本。