命令挂起head / netcat

时间:2012-10-29 00:32:45

标签: linux shell ssh head netcat

我使用两台linux机器来模拟一些防火墙测试...我通过在远程机器上通过ssh运行nc来执行测试...如果我像这样生成ssh,它工程...

ssh -i id_dsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \
    -p 2224 root@a2-idf-lab nc -s 10.26.216.82 10.195.18.132 \
    21 < /var/log/messages

但是,如果我尝试用/var/log/messages控制head -c 20 /var/log/messages的多少,命令会挂起,但我不明白为什么......

ssh -i id_dsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \
    -p 2224 root@a2-idf-lab 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 root@a2-idf-lab 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 ...奖励积分,如果你能通过ssh会话给我cli与nc合作的话。

2 个答案:

答案 0 :(得分:2)

<是shell重定向,它重定向输入流以从文件读取,而不是执行命令。尝试:

head -c 20 /var/log/messages | ssh -i id_dsa -o UserKnownHostsFile=/dev/null \
  -o StrictHostKeyChecking=no \
  -p 2224 root@a2-idf-lab 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 root@a2-idf-lab "head -c 20 /var/log/messages |\
     nc -s 10.26.216.82 10.195.18.132 21"

答案 1 :(得分:0)

尝试使用     头 - 20 我的猜测是问题是最后缺乏回车。