如何通过HTTP服务器执行shell命令

时间:2020-03-21 11:47:50  来源:igfitidea点击:

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。