2011-08-23 108 views
3

這是我在stackoverflow上的第一個問題! 我想要一個將在控制檯輸出上運行grep的unix腳本。這是我的腳本所做的: 1.遠程登錄到遠程服務器(我已成功完成此部分) 2.成功登錄後,遠程服務器在控制檯上顯示輸出信息。我需要在該控制檯輸出上運行grep(需要此幫助)Unix:在控制檯輸出上的Grep

所以,我需要一個腳本來在控制檯上出現的輸出上運行grep。

任何想法??

感謝, 普尼特

+0

你現在是怎麼產生你輸出的?如果你不能在那裏插入'grep',你需要將操作存儲在某個地方,然後在其上執行'grep'。 – hari

回答

1

你試過I/O重定向?你既可以做

$ your-command > output.txt 

,然後在該文件運行grep的,或者只是直接通過管道將輸出通過grep的,像這樣

$ your-command | grep ... 

this article或谷歌周圍類似。在網絡上可能有成千上萬篇關於此的好文章。

3

改爲使用SSH。腳本更安全並且更容易。

ssh [email protected]:/path/to/remote/script | grep 'something' 

與適當的密鑰設置,它甚至不會提示你輸入密碼。

+0

無法使用SSH,因爲遠程服務器只支持telnet! – Puneet

1

而不是telnet,我會建議使用netcat(nc)。然後,您可以通過標準輸入傳遞您的登錄憑據並grep標準輸出(nc輸出標準輸出中服務器發送的任何內容)。

nc <host> <port> <auth.txt | grep 'string' 
0

你想要做的可能是使用管道。你可以在上面的回答中看到它是你在命令中看到的|符號。根據佈局,在您的鍵盤上定位可能會很困難。 (我不得不承認它不是經常使用)。

管道將重定向一個命令的輸出。他們不會將它發送到控制檯,而是將它作爲另一個命令的輸入發送。

cmd1 | grep foo相當於在cmd1的輸出上運行grep foo(您可以使用netstat命令替換cmd1)。

最後一件事是你可以擁有任意數量的管道。例如在我的機器上,我可以運行ls -ltr | tail -1 | awk '{print $9}' | grep foo在上一個修改的文件中查找foo這個詞。