0

我正在使用两台 linux 机器来模拟一些防火墙测试......我nc通过在远程机器上运行 ssh 来执行测试......如果我产生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/messageswithhead -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 -到...如果您可以给我可以通过 ssh 会话使用的nccli,则可以加分...nc

4

2 回答 2

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"
于 2012-10-29T00:40:02.533 回答
0

尝试使用 head -n 20 我的猜测是问题是缺少最后的回车。

于 2012-10-29T00:37:52.443 回答