在 Linux 中,telnet 命令本身不支持重定向。但是,你可以使用管道(pipe)和子进程来实现类似的功能。这里有一个例子,说明如何将 telnet 命令的输出重定向到一个文件:
#!/bin/bash
# 将 telnet 命令的输出重定向到 output.txt 文件
{
echo "open example.com 23"
sleep 1
echo "your_username"
sleep 1
echo "your_password"
sleep 1
echo "your_command_here"
sleep 1
echo "quit"
} | telnet localhost 23 > output.txt
这个脚本首先创建了一个包含 telnet 命令及其参数的子进程,然后将其输出重定向到名为 output.txt 的文件。请注意,你需要根据实际情况替换 example.com、端口、用户名、密码和要执行的命令。
然而,这种方法可能存在安全风险,因为你的用户名和密码可能会被存储在脚本中。一个更安全的方法是使用 expect 工具,它可以自动与交互式程序进行通信。以下是一个使用 expect 的示例:
#!/usr/bin/expect -f
set timeout 20
set host [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
set command [lindex $argv 3]
spawn telnet $host 23
expect "login:"
send "$username\r"
expect "Password:"
send "$password\r"
expect "$ "
send "$command\r"
expect "$ "
send "quit\r"
interact
将此脚本保存为 telnet_auto.sh,并确保它具有可执行权限(使用 chmod +x telnet_auto.sh)。然后,你可以通过以下方式运行脚本:
./telnet_auto.sh example.com your_username your_password "your_command_here"
这将在不暴露用户名和密码的情况下自动执行 telnet 命令。