[英]SSH from my local machine to linux host and sudo to root user
使用子進程ssh到主機。
這是我用來ssh和運行命令作為我的用戶的代碼片段。 當我嘗試使用sudo命令時,我得到與tty相關的錯誤 - 不是終端(類似的東西)
sshProcess = subprocess.Popen(['ssh', hostname], stdin=subprocess.PIPE, stdout = subprocess.PIPE, universal_newlines=True, bufsize=0)
sshProcess.stdin.write("hostname\n")
sshProcess.stdin.write("ls -ldr %s \n"%path)
sshProcess.stdin.write("pwd \n")
sshProcess.stdin.close()
for line in sshProcess.stdout:
if line == "END\n":
break
print(line,end="")
但我無法在命令之下運行
sshProcess.stdin.write("sudo su - serviceuser \n")
您可以通過指定-t選項強制執行偽tty分配。
subprocess.Popen(['ssh -t', hostname], .....
從man ssh
-t
強制偽tty分配。 這可以用於在遠程機器上執行任意基於屏幕的程序,這可以是非常有用的,例如在實現菜單服務時。 多個-t選項強制tty分配,即使ssh沒有本地tty。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.