我的代码读起来像这样 -
import paramiko
import time
import sys
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
def runScripts():
parameter1 = 1000
client.connect('mysite.com', username='user', password='pass')
print ("Logged in into Site server")
stdin, stdout, stderr = client.exec_command("cd parent_folder/Sub_folder/script_folder; ./script1.sh %s" % parameter1)
print ("Script executed perfectly")
client.close()
runScripts()
我在控制台上输出如下 -
Logged in into Site server
Script executed perfectly
但是检查了因脚本而受影响的文件.sh 1000没有变化。问题不在于script.sh,因为我可以手动运行它并且它的行为符合预期。
客户端是否无法检测到命令的结束?
答案 0 :(得分:1)
我找到了对youtube视频上我自己的查询的回答,以获取交互式命令。
所以我尝试使用类似下面代码的通道来执行位于需要参数的服务器上的shell脚本 -
def runScripts():
parameter1 = 1000
client.connect('mysite.com', username='user', password='pass')
channel = client.invoke_shell()
print ("Logged in into Site server")
channel.send("cd parent_folder/Sub_folder/script_folder; ./script1.sh %s" % parameter1)
print ("Script executed perfectly")
client.close()
runScripts()
在上面的runScripts函数中,我引入了调用shell的新通道,然后我们可以在发送命令完成后通过此通道发送任何命令或数据,执行发生并且通道关闭。
如果它对你们有用,请接受答案。谢谢。