2012-10-29 115 views
0

我使用兩臺linux機器來模擬一些防火牆測試......我通過在遠程機器上通過ssh運行nc來執行測試......如果我像這樣產生ssh,它可以工作.. 。命令掛起head/netcat

ssh -i id_dsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \ 
    -p 2224 [email protected] nc -s 10.26.216.82 10.195.18.132 \ 
    21 < /var/log/messages 

但是,如果我嘗試控制多少的/var/log/messageshead -c 20 /var/log/messages,該命令掛起,但我不明白爲什麼...

ssh -i id_dsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \ 
    -p 2224 [email protected] nc -s 10.26.216.82 10.195.18.132 \ 
    21 < head -c 20 /var/log/messages 

我也試過這個,沒有更好的成功...

ssh -i id_dsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \ 
    -p 2224 [email protected] nc -s 10.26.216.82 10.195.18.132 \ 
    21 < (head -c 20 /var/log/messages) 

問題:爲什麼第二個命令掛起,我該怎麼做到我需要的東西?

僅供參考,這些實驗是真的準備發送到cat /dev/urandom | base64 | head -c 20 - ... nc獎勵積分,如果你能給我CLI將與nc通過SSH會話工作...

+0

嘗試'頭-c 20的/ var/log/messages中| ssh ...''或''ssh ...'head -c 20/var/log/messages''' –

回答

2

<是shell重定向,它重定向輸入流以從文件中讀取,而不是執行命令。嘗試:

head -c 20 /var/log/messages | ssh -i id_dsa -o UserKnownHostsFile=/dev/null \ 
    -o StrictHostKeyChecking=no \ 
    -p 2224 [email protected] nc -s 10.26.216.82 10.195.18.132 21 

這個管/var/log/messages從本地機器到nc在遠程機器上。 如果你想使用遠程機器上的/var/log/messages文件,使用引號的命令:

ssh -i id_dsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \ 
    -p 2224 [email protected] "head -c 20 /var/log/messages |\ 
    nc -s 10.26.216.82 10.195.18.132 21" 
0

嘗試使用 頭 - n 20 我的猜測是問題是最後缺乏回車。

+0

+ Mata是對的!錯誤的語法! – thedayofcondor