通过网络发送shell命令到Linux服务器

问题描述:

有没有一种工具可以让我在没有SSH的情况下通过网络发布命令?通过网络发送shell命令到Linux服务器

例如,我想创建一个配备DVD刻录机的新Linux机箱,并通过网络发送此命令“growisofs -dvd-compat -Z/dev/dvd -dvd-video dvd”要刻录的文件。该系统将自动化,因此我需要一些能够轻松高效地完成此项任务的系统。

+4

为什么使用ssh时遇到问题?它可以很容易地用来发出命令,再加上sftp/ftp来复制你想要刻录的文件。 – Cascabel 2009-08-28 23:28:00

+1

试图阻止您的回复:我想知道是否可能是您要避免的SSH密码提示?您不必使用密码登录 - 您可以使用公钥/私钥对。请参阅man手册中的ssh-keygen和ssh-copy-id。 – Cascabel 2009-08-28 23:34:33

+0

@Jefromi:也许他不知道ssh可以用于单个命令,并且可以配置为在不提示输入密码的情况下安全地运行。 – 2009-08-28 23:37:53

这里是我所阐明的答案形式的评论。

在本地主机上,运行ssh-keygen,很可能将密钥保存在默认位置并且不使用密码短语。接下来,使用ssh copy-id <[email protected]>将公钥复制到远程主机。

您的脚本,做这样的事情:

scp "$FILE_TO_BURN" [email protected]$REMOTE_HOST:"$BURN_DROP_DIR" 
ssh [email protected]$REMOTE_HOST $BURN_COMMAND 
ssh [email protected]$REMOTE_HOST rm "$BURN_DROP_DIR/$(basename $FILE_TO_BURN)" 

随时通过捕获SSH命令的退出状态/输出错误检测割肉出来。您可能还想考虑这样做,而不使用sshfs(由大多数发行版打包)之类的文件首先复制整个文件,以装载包含要在网络上刻录的文件的目录。

+0

其实我应该说我的问题是如何使程序网络可访问。我希望人们能够执行我的PHP脚本并让我的PHP脚本动态执行刻录程序。所以是有PHP执行 “SCP ”$ FILE_TO_BURN“ $ REMOTE_USER @ $ REMOTE_HOST:” $ BURN_DROP_DIR” SSH $ REMOTE_USER @ $ REMOTE_HOST $ BURN_COMMAND SSH $ REMOTE_USER @ $ REMOTE_HOST RM “$ BURN_DROP_DIR/$(基名$ FILE_TO_BURN)” 真做到这一点的最佳方式? – Chris 2009-08-29 00:24:29

您可以使用netcat和shell绑定。如果网络公开曝光,这当然是相当危险的。

Google search

+0

是的,我认为这是更多我正在寻找。谢谢。 – Chris 2009-08-29 00:56:36