[英]trouble running bash script remotely, redirecting output locally
我正在嘗試遠程運行腳本(從bash腳本),但我無法在本地重定向輸出以進行分析。 運行腳本沒有問題:
ssh -n -l "$user" "$host" '/home/user/script.sh $params'
但是我無法捕獲該腳本的輸出。 我嘗試過以下方法:
results=$(ssh -n -l "$user" "$host" '/home/user/script.sh $params')
results=`ssh -n -l "$user" "$host" '/home/user/script.sh $params'`
ssh -n -l "$user" "$host" '/home/user/script.sh $params' | grep "what I'm looking for"
ssh -n -l "$user" "$host" '/home/user/script.sh $params' > results_file
有任何想法嗎?
ssh user@host.com "ls -l" >output
你甚至可以這樣做:
ssh user@host.com "cat foo.tar" | tar xvf --
為簡單起見,使用ssh-keygen生成一個pub / private密鑰對。 將* .pub密鑰復制到遠程主機~~ .ssh / authorized_keys,確保它的chmod為600
那你可以做
ssh -i~ / .ssh / yourkey user@host.com ...等
它也不會要求密碼。 (如果您的密鑰對是無密碼的話)..
你肯定做錯了什么。 我只是測試它,它工作正常。
shadyabhi@archlinux /tmp $ cat echo.sh
#!/bin/bash
echo "Hello WOrld"$1
shadyabhi@archlinux /tmp $ ssh -n -l shadyabhi 127.0.0.1 '/tmp/echo.sh' foo
Hello WOrldfoo
shadyabhi@archlinux /tmp $ ssh -n -l shadyabhi 127.0.0.1 '/tmp/echo.sh' foo > out
shadyabhi@archlinux /tmp $ cat out
Hello WOrldfoo
好吧,為了讓ssh -n
完全正常工作,你需要設置一些東西,這樣你就可以在不需要密碼或密碼的情況下登錄(所以你需要一個本地私鑰,可以使用ssh-agent,或者沒有密碼,並且該公鑰需要位於遠程計算機上的相應authorized_keys文件中。 但如果是這樣的話,你所擁有的應該可以正常工作(它在很多機器上都能正常工作)。
另一個奇怪的可能性是你的遠程script.sh
試圖寫入stdin或/ dev / tty而不是stdout / stderr。 在這種情況下,它不適用於ssh -n
實現
ssh -n -l "$user" "$host" '/home/user/script.sh $params' > results_file
按預期正在工作。 它只是在輸出被重定向時才會鎖定(並且腳本需要5-6分鍾才能構建),因此沒有顯示。 謝謝大家。
您的腳本沒有獲得任何參數,因此可能需要很長時間才能運行。 此外,無論出現什么(在stdout上)都可以通過管道傳輸到下一個命令,或者像任何其他本地命令一樣重定向到文件。 考慮以下:
$ cat ~/bin/ascript.sh
echo one:$1 two:$2 three:$3
$ params="squid whale shark"
$ ssh localhost 'ascript.sh $params'
one: two: three:
$ ssh localhost "ascript.sh $params"
one:squid two:whale three:shark
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.