2016-02-25 37 views
0

在我的腳本: 1.我已經通過用戶名和密碼做ssh來一臺機器 2.比我所要做的蘇 - 用戶,它會提示密碼 比我必須運行我的命令,即ls。sshpass和SU和命令都聚集在一個班輪查詢

此前,沒有第二步,我很高興能夠使用sshpass &通過我的腳本在單線命令中激發我的查詢。像這樣的東西。 sshpass -p pass user @ host「命令或ls」

但是現在我在ssh之後執行了一個額外的步驟。所以有人可以幫助我理解,我怎麼能一起使用所有3,即sshpass,su和命令在一行查詢。

感謝

回答

0

假設你只希望改變用戶對於一個命令,你需要「-c」標誌。

su - user -c "[command]" 

嵌套引號會變得有點複雜,但在這種情況下,您只需要轉義內部引號。

su - user -c "sshpass -p pass [email protected] \"command or ls\"" 
+0

我會解釋我是如何手動完成的。我不確定您的解決方案是否工作。 cmd1:ssh主機名-l用戶 它提示我輸入密碼。我輸入它。 主機名> su - 用戶 它再次提示輸入密碼。 然後我在這裏運行我的命令,像ls。 看起來像你第一次做su然後sshpass,並且你的cmd沒有地方輸入su密碼。 –

+0

@TajinderSingh - 爲什麼用戶需要自己找?記住'ssh -l用戶主機'以用戶'user'登錄。 – alvits

+0

不對自己。 我運行的命令是 1. sshpass -p abc123 ssh alpha @ tyco @ company.com 2. su - beta和輸入此用戶的密碼beta ***** 3.比我運行我的實際命令。例如貓log.txt 我首先必須做使用alpha的ssh,而不是必須對用戶beta執行su操作,而不得不將命令作爲beta運行。是否可以在一個班輪中? 感謝您的時間:) –