2017-04-01 116 views
2

我的代码读起来像这个 -无法使用的paramiko SSH客户端

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 

但检查的文件和参数来执行远程部署SSH脚本由于script.sh 1000将会受到影响。没有变化。问题不在于script.sh,因为我可以手动运行它,它的行为与预期相同。

是客户端无法检测到该命令的结束?

+0

尝试在某处转储脚本的输出? '> output.txt'?也许在脚本中添加回显日期以确保它不是脚本的错误。 –

+0

我也会尝试,但我认为它的脚本不会在任何地方出错。感谢您的回复@AshishNitinPatil – Ghana

回答

1

我找到了答案,我自己的查询上的视频在youtube交互式命令。

  1. 一些它是如何与命令终止和客户端的问题是无法找到它的结束,因为它不是Unix /系统定义的命令(“系统命令如ls -lrt,CD,grep的工作完全正常使用客户端” )
  2. 所以我试图通道像下面的代码来执行位于服务器的外壳脚本,其需要参数 -

    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()

  3. 在上述runScripts功能我已经引入了调用壳新的信道,然后就可以经由该信道发送任何命令或数据一旦被执行完成后发生andchannel关闭发送命令。

接受答案,如果它对你们也有用。谢谢。