如何通过HTTP服务器执行shell命令
shell2http - 通过HTTP服务器执行shell命令
根据我们使用的分发,可以从以下链接下载shell2http。
它将支持GNU/Linux,Windows和Mac OS X.
或者,运行以下命令从终端下载它:
确保已安装命令行下载Wget和Compression Tool Unzip。
在基于RPM的系统上,将以下命令用作root用户来安装它们。
$yum install wget unzip
在基于DEB的系统上,运行:
$sudo apt-get install wget unzip
要下载64位shell2http:
$wget https://github.com/msoap/shell2http/releases/download/1.7/shell2http-1.7.linux.amd64.zip
要下载32位shellhttp:
$wget https://github.com/msoap/shell2http/releases/download/1.7/shell2http-1.7.linux.386.zip
在我们选择的任何位置提取压缩文件。
$unzip shell2http-1.7.linux.xxx.zip
转到提取的文件夹,然后开始使用shell2http。
让我们说你的朋友想查看系统的安装Linux内核版本。
为此,运行:
$shell2http -host 192.168.1.150 -port 8080 /kernel "uname -r"
其中192.168.1.150是我们当地的系统的IP地址。
8080是端口号。
/内核是查看命令输出的路径。
和"UNAME -R"是显示系统内核版本的命令。
示例输出:
2016/02/03 14:57:21 register: /kernel (uname -r) 2016/02/03 14:57:21 listen http://192.168.1.150:8080/
我们可能需要在防火墙或者路由器中打开Port"8080"。
在使用防火墙(E.G RHEL,CentOS)的系统上,以root用户运行以下命令以打开端口8080:
# firewall-cmd --add-port=8080/tcp --permanent
使用命令重新启动防火墙服务:
# firewall-cmd --reload
在Debian和Ubuntu系统上,运行:
$sudo ufw allow 8080
只需确保任何其他应用程序尚未使用端口8080。
如果是,请在命令中提及不同的端口,也可以通过防火墙允许该端口。
现在,告诉朋友打开他的网络浏览器并将其指向"http://ip-address:8080/kernel"或者"http://hostname:8080/kernel"。
这很简单。
如果朋友想要分析磁盘使用情况,只需在本地系统上运行以下命令。
$shell2http -host 192.168.1.150 -port 8080 /diskusage "du -h"
并且,请他在Web浏览器中打开http://ip-address:8080/diskusage。
要退出命令,请按Ctrl + C.
我们还可以组合两个命令并将输出发送到朋友如下。
在下面的示例中,我将运行du和ps命令并将输出发送到HTTP服务器。
$shell2http /diskspace "df -h" /ps "ps aux"2016/02/03 15:09:34 register: /diskspace (df -h)
示例输出:
2016/02/03 15:09:34 register: /ps (ps aux) 2016/02/03 15:09:34 listen http://:8080/
你注意到上面的命令吗?
我没有提到我系统的IP地址。
shell2http将在不提及IP地址或者主机名的情况下工作。
现在,朋友可以从URL http://ip-address:8080/diskspace查看磁盘空间的输出,并使用url http://ip-address查看"ps"命令的输出:8080/ps。