一、功能描述
有时候我们需要不定时的在服务器上执行某些脚本,当然我们可以使用电脑+XShell等工具登录到服务器运行脚本,如果使用手机就不方便操作了,那我们把脚本放在WEB页面中,只要手机可以正常访问到服务器,就可以使用浏览器打开页面,点击对应的按钮完成操作。
在网页上规划好相应的按钮和脚本,点击即可实现相应的功能:
二、服务器环境准备
实现原理
:使用apache结合php脚本执行linux命令;
前提条件
:
安装apache和php软件包;
关闭或者配置好防火墙和SELinux;
测试系统:CentOS7.6;
配置阿里YUM源:
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
2.1 安装软件包
安装apache:
yum install httpd -y
安装php软件包:
yum install php -y
2.2 创建php页面
vi /var/www/html/index.php<?php
phpinfo();
?>
默认情况下,是无法打开php页面的;此php为测试页面,无实际用途。
2.3 修改httpd配置文件
vi /etc/httpd/conf/httpd.conf#将denied修改为granted
#新增加一行:AddType application/x-httpd-php .php
#添加index.php
修改访问端口:把访问端口修改为8888
Listen 8888
ServerName localhost:8888
#检查配置是否正确,正确则不打印任何信息
2.4 启动httpd测试
systemctl start httpd
如果开启了防火墙则开启8888端口:
firewall-cmd --zone=public --permanent --add-port=8888/tcp
firewall-cmd --reload
通过浏览器访问服务器,正常情况下可以看到php的信息:
2.5 配置apache帐号
因为httpd是由apache用户运行,所以我们要设置apache用户可以免密码登录到服务器。
usermod -s /bin/bash apache #设置apache用户可以登录系统
chown -R apache:apache /usr/share/httpd #yum安装apache服务,apache用户的家目录就是/usr/share/httpd,可以通过/etc/passwd文件查看
su - apache #切换到apache用户,生成密钥
ssh-keygen #执行命令后,一直回车即可
ssh-copy-id -i root@192.168.0.12
#将公钥上传到root用户上
上传公钥后验证:
可正常免密码登录即可。
为了安全起见,将apache的bash修改回来为/sbin/nologin:
usermod -s /sbin/nologin apache
三、配置测试脚本
在服务器上配置几个测试脚本。
创建一个目录,存放shell脚本文件:
mkdir /script
3.1 查看网卡信息
新建一个查看网卡信息的shell脚本:
vi /script/ipaddshow.sh#!/bin/bash
ip addr show ens32
3.2 查看磁盘使用率
新建一个查看磁盘使用率的shell脚本:
vi /script/disk.sh#!/bin/bash
df -Th
四、 配置http页面
配置http页面做为主页面,通过点击指定的按钮,执行对应的PHP页面;
vi /var/www/html/index.html<!DOCTYPE html>
<html>
<body>
<head><meta http-equiv="Content-type" content="text/html; charset=utf-8" />
</head>
<span>按以下提示点击相应按钮:</span>
<br>
<br>
<form action="ipaddshow.php" method="post"><input type="submit" value="查看网络" name="ipaddshow" />
</form>
<br>
<form action="disk.php" method="post"><input type="submit" value="查看磁盘" name="showdisk" />
</form>
<br>
<br>
</body>
</html>
4.1 配置查看网卡的php页面
php页面主要功能是执行指定shell脚本;
vi /var/www/html/ipaddshow.php<?php
header("Content-Type:text/html;charset=utf-8");
$shell="{$_POST['ipaddshow']}";echo "<pre>";echo "执行<font color='red'>$shell</font>结果如下:<br>";system("ssh -Tq root@192.168.0.12 sh /script/ipaddshow.sh $shell");echo "</pre>";
?>
4.2 配置查看磁盘的php页面
vi /var/www/html/disk.php<?php
header("Content-Type:text/html;charset=utf-8");
$shell="{$_POST['showdisk']}";echo "<pre>";echo "执行<font color='red'>$shell</font>结果如下:<br>";system("ssh -Tq root@192.168.0.12 sh /script/disk.sh $shell");echo "</pre>";
?>
4.3 测试效果
当打开网页时:
点击按钮时:
通过点击对应的按钮,在页面上不能显示脚本运行后的结果,表示脚本是运行成功的。
五、设置登录密码
以上在访问WEB页面时,直接获取结果,这样很不安全,可以配置一个登录密码来控制终端的访问。
安装密码生成工具:
yum install httpd-tools -y
生成帐号和密码:
htpasswd -cm /etc/httpd/htpasswd admin
说明:
输入两次密码;
/etc/httpd/htpasswd就是配置文件里面配置的密码文件,admin就是用户名;
查看文件中的密码为加密后的字符串:
修改http配置文件:
vi /etc/httpd/conf/httpd.conf
增加或修改:
AllowOverride all
authuserfile "/etc/httpd/htpasswd"
authname "My privately website"
authtype basic
require user admin
注释行:
#Require all granted
重启http服务:
systemctl restart httpd
访问测试:
输入正确的用户名和密码后,才可正常访问界面;
六、 总结
通过以上的测试情况来看,通过网页就可以实现shell脚本的运行;
在测试中发现,只有当脚本执行完成后,才会从http页面跳转到php页面打印脚本的结果,如果脚本需要长时间运行,则WEB页面只在http的主页中等待,而不是跳转到php页面。
问题:可以无限次数的输入错误的用户名和密码,如果没有断开连接或超时的机制,可能会被攻击。
手机登录也是可以使用的:
原创 唐哥 成长的小学生