-1

这是我的设置。运行 Python 2.7 代码的 Windows PC1 ----> 安装了 tcl 的 Windows PC2。

Windows PC1 和Windows PC2 通过局域网连接,可以相互访问。

现在我想使用 python 从 PC1 打开 PC2 的 CMD 行(作为管理员)并执行 windows 命令。是的,这可以通过 paramiko 来实现。

现在我想在 PC2 命令提示符下运行“tclsh”命令。在此之后,命令行进入 tcl 提示符 [%]。在这里我可以执行 tcl 命令,如 puts "Welcome"。因此,如果我尝试通过 paramiko 执行“tclsh”命令,它处于等待状态,因为提示已从 windows 提示更改为 %。

我的意图是通过 python [PC1] 在 tclsh 提示符 [PC2 cmd line] 中运行 tcl 命令。

示例:从 PC1 我想通过 python2.7 执行“将“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 % 提示后,我想执行“ puts "Welcome" " 。如果给出 "hostname" windows 命令,我会得到回复,而不是 tclsh。

4

1 回答 1

0

我得到了在 python 2.7 中使用 pramiko 访问远程 Windows pc 的 tclsh 提示符的解决方案。

Step1:第一次使用tclsh命令的invoke shell方法,将invoke_shell的返回值存储到一个全局变量中。假设返回值为x。

步骤2:现在对于 tclsh 提示符的任何其他命令 [like cmd = puts "stack"] 使用 like x.send(cmd+"\n")

第三步:现在我们可以得到像 x.recv(9999) 这样的输出缓冲区

注意 [仅适用于 Windows]:x.recv(9999) 返回带有许多转义序列的实际输出。我们需要清理它以获取实际数据。

于 2019-06-28T05:40:05.737 回答