簡體   English   中英

SSH從我的本地機器到linux主機,sudo到root用戶

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM