如何在 telnet 写入命令中添加变量

Posted

技术标签:

【中文标题】如何在 telnet 写入命令中添加变量【英文标题】:how do I add a variable into the telnet write command 【发布时间】:2018-11-05 22:25:55 【问题描述】:

我一直在尝试编写允许我从远程登录服务器获取文件的代码,如果我们可以在远程登录写入函数中包含变量,我想这样做。

这是我的代码。

import telnetlib  
import sys  
import getpass  

host = "192.168.1.1"  

tn = telnetlib.Telnet(host, "23")  
tn.write((" \n").encode('ascii'))  
tn.write((" \n").encode('ascii'))  
tn.write(("terminal length 1000 \n").encode('ascii'))  
tn.write(("terminal width 24 \n").encode('ascii'))  
tn.write(("""copy command-output "show tech all" tftp 192.168.1.10 test.txt \n""").encode('ascii'))  
tn.write(("exit \n").encode('ascii'))  
tn.write(("exit \n").encode('ascii'))  
tn.write(("y").encode('ascii'))  

print (tn.read_all())

这是正在发送的命令,它应该在一个字符串中。

复制命令输出“show tech all”tftp 192.168.1.10 test.txt

我想将它改为 host.txt 而不是 test.txt

比如上面的代码host == 192.168.1.1,那么文件名本质上应该是192.168.1.1.txt,这样可以吗?

【问题讨论】:

您可以在任何可以使用字符串(字面量)的地方使用变量(其值为字符串)。你有什么不清楚的地方? 【参考方案1】:
import telnetlib  
import sys  
import getpass  

host = "192.168.1.1"  

tn = telnetlib.Telnet(host, "23")  
tn.write(b"\n")
tn.write(b"\n") 
tn.write(b"terminal length 1000 \n")
tn.write(b"terminal width 24 \n")
command=f"copy command-output "show tech all" tftp host test.txt"
tn.write(command.encode('ascii')+b"\n")  
tn.write(b"exit\n") 
tn.write(b"exit\n")
tn.write(b"y")
print (tn.read_all())

【讨论】:

以上是关于如何在 telnet 写入命令中添加变量的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Shell 脚本的变量中捕获 telnet 命令的输出

如何在 vbscript 中使用字符串变量作为 telnet 命令?

如何使用 CreateProcess 函数正确调用“telnet”?

如何从 bash 获取 telnet 命令的输出?

命令行下 telnet 结果如何输出

如何在 C# 程序中打开 Telnet 会话并以编程方式发送命令和接收响应?