python
  • string
  • shell
  • echo
  • paramiko
  • 2016-11-24 125 views -2 likes 
    -2

    我是python以及shell的新手。我試圖發送這個命令(解析「Varying sentence」)到服務器。在echo命令中傳遞python變量

    ('echo "(parse \\"trees are tall\\")" |nc localhost xxxxx') 
    

    我試過如下:

    ssh_client = paramiko.SSHClient() 
    ssh_client.connect('server', username='wefw', password='fwf') 
    
    for line in json_text: 
        line = line.rstrip('\r\n') 
        json_content = json.loads(line) 
    body = '' 
    try: 
        body = json_content['id']['body'] 
        body_encoded = body.encode('utf-8') 
        stdin, stdout, stderr=ssh_client.exec_command('echo "(parse \\"${body_encoded}\\"})" |nc localhost xxxxx') 
    

    的判決而改變。我無法在解析命令中對句子進行硬編碼。所以我嘗試像這樣傳遞變量「body_encoded」:

    ('echo "(parse \\"${body_encoded}\\")" |nc localhost xxxxx') 
    

    但這裏有些問題是錯誤的。我怎樣才能傳遞變量,「body_encoded」具有字符串值?

    exec_command('echo "(parse \\"varying sentence\\")"') 
    

    回答

    3

    您可以使用字符串插值:

    ssh_client.exec_command('echo "(parse \\"%s\\")" |nc localhost xxxxx' % body) 
    
    +0

    這似乎是比較合適的答案。我嘗試過這個。但我無法得到這個工作。身體沒有發送。硬編碼只適用於我。 :-(。任何調試方式? – vishnu

    +0

    嘗試構建字符串並打印_before_你調用'exec_command'來驗證插值是否正常工作,如果不是,嘗試打印'body'來驗證它是否包含你期望的 –

    +0

    是的,我在exec_command後打印了「body」,它有句子,我還在exec_command之前打印了str(body),它也可以工作!! – vishnu

    -2

    嘗試將原料串那樣: (r'echo "(parse \"trees are tall\")" |nc localhost xxxxx') 即不使用轉義字符只是你的字符串前加一個「R」。也許這會有所幫助。

    +0

    沒有句子變化。我需要發送一個包含句子的變量。 – vishnu

    相關問題