使用ssh在远程机器上Netcat
Netcat on remote machine using ssh
我试图通过使用ssh运行netcat,似乎我的代码总是在我的C代码中失败。下面是我使用system()按照这个顺序执行的命令。
system("ssh machine 'nc -l 61001|dd bs=64M of=temp' &")
system("/bin/dd if=filename bs=64M|nc IP_address 61001")
我注意到第一个命令在远程机器上创建临时文件时工作正常。第二个dd命令失败,并声明在远程机器上写入了0个字节。当从终端执行这些命令时,它们可以正常工作,但是当我将它们放入c中的system()调用中时,它们就会失败。
简短回答:
一个& disown
(而不仅仅是&)应该做。
解释:
system()
生成一个shell,它只执行一个命令,然后退出。&
告诉shell将命令fork到后台(意思是,它不等待它完成),但它仍然是shell的会话和进程组的一部分。当领队(炮弹)离开时,所有的孩子都被杀死。disown
导致shell启动新的进程组,子进程现在由init
(系统中的第一个进程)拥有。
"真正"答:
这是关于编程的。您正在疯狂地分叉进程,以完成C程序可以使用内置库调用轻松完成的事情(除了ssh
,但也有更好的方法)。阅读BSD sockets
相关文章:
- netcat command in c++
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 如何在本地机器上运行c++和javascript客户端代码(hackerbank风格)
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 64位机器上的C++内存对齐
- 使用不同的链接器会产生不同的机器代码吗
- 我写了一个C++程序来模拟Enigma机器.我没有得到输出
- 如何将经过训练的机器学习模型保存在python中并将其加载到C++中进行预测?
- QTcpSocket emulate netcat 'conversation'
- C++ 两台不同机器之间通过wifi进行套接字通信
- 使用 ssh 重新连接到远程 Ubuntu 机器后,如何继续使用 gdb 调试 c++ 代码?
- 代码厨师 2019 年 12 月午餐时间愚蠢的机器
- CMake:尝试在 Jenkins 构建机器上运行时出现"Linked Library"错误 (0xc0000135)
- objdump 不显示机器代码,但显示 ASM
- 不同机器之间的标准时钟性能差异显著
- 如何使用Messenger示例连接两台机器
- 如何在拆分为多个文件的分层 SM 中退出子机器?(使用boost::MSM)
- 如果在创建对象时创建了 VPTR,那么为什么具有虚拟功能的类的大小在 32 位系统上为 4,在 64 位机器上为 8
- 当我在支持 avx2 的机器上编译并在另一台仅支持 avx 的机器上运行二进制文件时会发生什么?
- 使用ssh在远程机器上Netcat