2012-10-29 78 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