2017-04-01 120 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關閉發送命令。

接受答案,如果它對你們也有用。謝謝。