python使用ssh 中文_使用Python的Parami自动化ssh连接和程序执行

  • Post author:
  • Post category:python


我想用python自动化一个特定的任务。

这个任务包括,与ssh连接到远程服务器,并运行一个特定的程序(称之为prog.out),该程序可能要求或不要求用户输入

考虑到我的研究结果可能是错误的。在

让我们从prog.out不请求任何输入的简单可能性开始,而只是将一些信息打印到控制台:int main(int argc, char* argv[]) {

printf(“Hey there, fella\n”);

printf(“How are you this morning?\n”);

printf(“See ya…\n”);

return 0;

}

它编译为:prog.out,位于服务器名上,等待执行。

所以在这种情况下:

^{pr2}$

将非常好地工作,并且将打印出prog.out生成的任何内容。

但如果prog.out是:int main(int argc, char* argv[]) {

printf(“Hey there, fella\n”);

printf(“How are you this morning?\n”);

printf(“please enter an integer…\n”);

int a;

scanf(“%d”, &a);

printf(“you entered %d\n”, a);

printf(“see ya…\n”);

return 0;

}

然后上面的python代码将在sout.readlines()(等待eof?)阻塞。。。

避免在sout.readlines()中阻塞的方法是通过写入其stdin管道向prog.out提供输入:client = paramiko.SSHClient()

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

client.connect(“server_name”)

sin, sout, serr = client.exec_command(‘./prog.out’)

sin.write(’55\n’)

for line in sout.readlines():

print(line, end = ”)

但我不知道prog.out是否需要用户输入…

我正在寻找一种健壮的方法来运行prog.out,并允许用户根据需要与它进行长时间的交互。

在prog.out需要输入时有什么指示吗?在

编辑

好的,我做了一些实验,发现只要prog.out没有退出,任何从通道read()的尝试都会被阻止,但是只要没有输入,prog.out就不能退出…

为什么我无法读取prog.out已经发送的字节,即使它还没有完成?

我真的很想模拟用户,就像他或她直接与prog.out交互一样。。。在



版权声明:本文为weixin_39861255原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。