这是我的设置。 正在运行Python 2.7代码的Windows PC1 ---->已安装tcl的Windows PC2。
Windows PC1和Windows PC2通过LAN连接并且可以互相访问。
现在,我想使用python从PC1打开PC2的CMD行(作为管理员),并执行Windows命令。 是的,可以通过paramiko来实现。
现在,我想在PC2命令提示符中运行“ tclsh”命令。之后,命令行进入tcl提示符[%]。在这里,我可以执行puts“ Welcome”之类的tcl命令。因此,如果我尝试通过paramiko执行“ tclsh”命令,由于提示符已从Windows提示符更改为%,它处于等待状态。
我的意图是通过python [PC1]在tclsh提示符[PC2 cmd行]中运行tcl命令。
示例:从PC1我想通过python2.7执行“ puts“ Hello”到PC2 tcl提示符。
请给我一些想法,可以用[python模块或任何其他方法]通过python 2.7访问tclsh提示。
通过paramiko正常的Windows命令可以按预期运行,但是tclsh输入%提示符,因此paramiko在这种情况下不起作用。
我想通过python 2.7远程访问tcl提示符。
我想通过python在远程系统的tclsh提示符内执行tcl命令。这是我尝试过的小程序。
host = '192.168.1.4'
user = 'lenovo'
passw = 'XXX'
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=host, username=user, password=passw)
stdin, stdout, stderr = ssh.exec_command('tclsh')
print (str('.'.join(stdout.readlines())))
print (str('.'.join(stdin.readlines())))
print (str('.'.join(stderr.readlines())))
但是当tclsh进入新的%提示符时,我没有看到任何输出。我该如何解决?访问tclsh%提示符后,我要执行“ 输入“欢迎” ” 如果没有给出“主机名” Windows命令,我会得到回复。
答案 0 :(得分:0)
我得到了使用python 2.7中的pramiko访问远程Windows pc的tclsh提示符的解决方案。
第1步:第一次对tclsh命令使用invoke shell方法,并将invoke_shell的返回值存储到globa变量中。假设返回值为x。
Step2:现在,对于tclsh提示符的任何其他命令[例如cmd =放置“堆栈”]都可以使用x.send(cmd +“ \ n”)
Step3:现在,我们可以获得x.recv(9999)之类的输出缓冲区
注意[仅用于Windows]:x.recv(9999)返回带有许多转义序列的实际输出。我们需要清理它以获取实际数据。