我嘗試從Python發送一些SSH命令。它工作得很好,但是一旦嵌套引號,我就會陷入混亂。ssh與Python:如何正確使用轉義和引號
所以在很基本情況我只是做:現在
cmd = "ssh -A -t [email protected] \"do_on_host\"")) # notice the escaped quotes
Popen(cmd, ..., shell=True)
,在一個更復雜的情況,我想使用用戶指定的命令。請注意,我逃過周圍的用戶命令和用戶命令引號:
user_cmd = "prog -arg \"a string arg\""
cmd = "ssh -A -t [email protected] \"do_on_host; " + user_cmd + "\"")) # notice the escaped quotes
Popen(cmd, ..., shell=True)
它,當我嘗試的SSH兩個跳變得更糟。請注意,我想更多的東西有單,雙引號來轉義:
user_cmd = "prog -arg \"a string arg\""
cmd = "ssh -A -t [email protected] \"ssh -A -t [email protected] '" + user_cmd + "' \""
Popen(cmd, ..., shell=True)
它可能變得更糟:該片段可能在腳本do_over_ssh.py
其中user_cmd
可能與從控制檯讀取使用,如:
$ ./do_over_ssh.py my_cmd -arg "a string arg"
畢竟,我完全困惑。
在Python 3.5中處理嵌套引號的規範和乾淨的方法是什麼?
(重要提示:其他的答案是Python 2.7版!)
爲什麼不使用Fabric3來運行遠程用戶命令?多跳也工作,如在這裏提到的https://stackoverflow.com/questions/20658874/how-to-do-multihop-ssh-with-fabric –