簡體   English   中英

如何使用並行 ssh 執行“su”命令

[英]How to execute 'su' command using parallel-ssh

我想使用並行 ssh登錄到兩個主機並執行su命令。 然后我想通過打印whoami來確認我是 root 用戶

代碼:

hosts = ['myHost1', 'myHost2']
client = ParallelSSHClient(hosts, user='myUser', password='myPassword')

output = client.run_command('su')

for host in output:
    stdin = output[host].stdin
    stdin.write('rootPassword\n')
    stdin.flush()

client.join(output)

output = client.run_command('whoami')

for host, host_output in output.items():
    for line in host_output.stdout:
        print("Host [%s] - %s" % (host, line))

結果:

Host [myHost1] - myUser
Host [myHost2] - myUser

顯然,我希望在輸出中使用 root。 我正在關注文檔。

我試過使用所有不同的行結尾而不是\\n並且沒有任何改變。 如何使用parallel-ssh執行su命令?

嘗試這個:

**def exec_command(hosts):
    strr = ""
    client = ParallelSSHClient(hosts, user='admin', password='admin_password')
    cmd = 'echo root_password |su -c "commmand" root'
    output = client.run_command(cmd)
    client.join()
    for host_out in output:
    for line in host_out.stdout:
        strr+=line+" "
    return strr
    **

'echo root_password |su -c "command" root'

嘗試將sudo=True放在run_command

output = client.run_command(<..>, sudo=True)

就像在文檔中一樣

事實證明,我正在嘗試做的事情是無法實現的。

第一個問題

我在這篇文章中發現所有命令都在他們自己的頻道中。 這意味着即使su成功,它也不會影響第二個命令。 帖子作者推薦運行

su -c whoami - root

第二個問題

我設法通過改變甚至進一步調試問題host_output.stdouthost_output.stderr原來,我接收這在以前是不被所述終端上顯示一個錯誤:

standard in must be a tty

此問題的可能解決方案在這里 它們對我不起作用,但可能對你有用。

對我來說,解決方法是允許我所有的主機 root 登錄。 然后在parallel-ssh 中,我以root 身份登錄並擁有所有權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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