Python 为子流程调用提供输入
我正在运行一个命令来调用pscp.exe,以便在主机之间传输一些文件。我正在使用子流程模块执行pscp.exe。以下是代码示例:Python 为子流程调用提供输入,python,Python,我正在运行一个命令来调用pscp.exe,以便在主机之间传输一些文件。我正在使用子流程模块执行pscp.exe。以下是代码示例: command = 'pscp -i {} {}@{}:/files/{} {}'\ .format(privkey, username, server, file_remote_name, file_local_name) log(logger, "Command to run: {}".format(comm
command = 'pscp -i {} {}@{}:/files/{} {}'\
.format(privkey, username, server, file_remote_name, file_local_name)
log(logger, "Command to run: {}".format(command), logging.DEBUG)
ret_code = subprocess.call(args=command, shell=False)
if ret_code == 0:
return True
else:
return False
第一次运行时,pscp.exe会提示接受主机密钥。我阅读了putty文档,但没有找到任何自动接受密钥的选项。因此,在第一次运行时,我必须手动按下“y”键。这在我的prod环境中是不可能的,因为它完全由Saltstack管理,并且我不希望有任何人工交互。那么,如何修改程序以将“y”键发送到pscp进程
PS:我知道在另一个问题中,人们建议在pscp命令前面加上“echo y |”。但它似乎不适用于subprocess.call()函数。我用错了吗 这回答了你的问题吗
if-expr:return-True-else:return-False应写成return-expr
。阅读子流程的文档。调用以了解shell
参数的实际功能。这是否回答了您的问题if-expr:return-True-else:return-False应写成return-expr
。并且,阅读子流程的文档。调用以了解shell
参数的实际作用。