温馨提示×

linux telnet怎样批量操作

小樊
38
2026-10-06 13:27:41
栏目: 智能运维

在 Linux 下,telnet 本身不支持批量操作,因为它是一个交互式协议客户端。但可以通过配合脚本或工具来实现“批量登录 / 批量执行命令”。下面按常见场景给你几种实用方案。


一、使用 expect 脚本(最常用)

expect 可以模拟人工输入,实现 telnet 批量操作。

1️⃣ 安装 expect

yum install expect -y      # CentOS
apt install expect -y      # Ubuntu

2️⃣ 单个 telnet 自动登录示例

#!/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

3️⃣ 批量执行(循环调用)

for ip in 192.168.1.10 192.168.1.11 192.168.1.12
do
    ./telnet.exp $ip admin 123456
done

二、使用 shell + here document(不推荐但可用)

telnet 192.168.1.10 <<EOF
admin
123456
ls
exit
EOF

⚠️ 缺点:

  • 无法处理复杂交互
  • 容易卡住

三、使用 nc(netcat)代替 telnet

如果你的操作是固定命令,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 代替 telnet(安全 + 可批量)

ssh user@host "command"

✅ 使用 ansible(真正批量)

ansible all -i hosts -m command -a "uptime"

五、telnet 批量常见坑

问题 原因
卡住 没发 \r
登录失败 提示符不匹配
执行中断 网络延迟
不安全 telnet 明文传输

六、总结建议

✅ 临时测试:expect
✅ 批量运维:ansible / ssh
❌ 生产环境:不要用 telnet


如果你能告诉我:

  • 是 网络设备(交换机/路由器) 还是 Linux 主机
  • 想批量做什么(命令 / 配置 / 采集)

我可以直接给你一份可用脚本。

0 踩