是否可以构建一个用于将`pseudo-filesystem`发送到其他机器的代码?

时间:2014-02-10 16:27:05

标签: memory cpu sh proc info

我正努力将pseudo-filesystem发送到其他计算机。

在这种情况下,我使用/proc/cpuinfo/proc/meminfo作为伪文件系统示例。

我有两台计算机可以在ssh中相互通信。

现在,我正在尝试构建一个 * .sh 代码,以保护从其他计算机复​​制某些系统文件。代码是:

#INPUT
export MASTER=user@11.1.111.11
export HELPER=user@12.1.122.12


#Obtaining CPU and Memory Data
scp $MASTER:/proc/cpuinfo /master/.
scp $MASTER:/proc/meminfo /master/.
scp $HELPER:/proc/cpuinfo /helper/.
scp $HELPER:/proc/meminfo /helper/.

我的想法是我可以在任何计算机(Master或Helper计算机)中运行此脚本。

但是,以后复制的文件是空白的,里面没有任何信息。 我尝试sudo chmodsudo chown /proc/文件夹,但系统表示权限被拒绝。仅供参考,我不会激活root用户并且始终只使用sudo

有人可以指导我一些解决方案吗?

其他信息和即兴创作: 完整代码位于jsfiddle。 我只是尝试使用jsfiddle的协作选项,尽管此代码不是JavaScript。 http://jsfiddle.net/santosasandy/sWYLL/#&togetherjs=hCO3VuPwO4

2 个答案:

答案 0 :(得分:2)

scp似乎首先使用stat来确定要传输的文件的大小,然后传输到该字节数。由于/proc是伪文件系统,而/proc/cpuinfo是pseduo文件,因此stat将其大小报告为零字节。因此,scp不会转移任何内容。

相比之下,cp似乎只是从文件中读取块,直到它不能再读取为止,因此stat报告的零大小无关紧要。

要将文件复制到另一个系统,您似乎必须先使用cp制作本地副本,然后使用scp通过网络进行传输。

答案 1 :(得分:1)

您可以使用cat从伪文件中读取,而不是尝试复制它们。例如:

ssh $MASTER 'cat /proc/cpuinfo' > /master/cpuinfo