我使用两台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
合作的话。
答案 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 我的猜测是问题是最后缺乏回车。