在浏览器中以按钮的方式执行Shell脚本

news/2025/1/7 13:27:27/文章来源:https://www.cnblogs.com/o-O-oO/p/18654057

一、功能描述

有时候我们需要不定时的在服务器上执行某些脚本,当然我们可以使用电脑+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页面。
问题:可以无限次数的输入错误的用户名和密码,如果没有断开连接或超时的机制,可能会被攻击。
手机登录也是可以使用的:

原创 唐哥 成长的小学生

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/864585.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于ESP32的桌面小屏幕实战[5]:PCB下单

1. 焊接调试前准备 PCB下单 点击“PCB下单”检查一下DRC确认无错误之后,确认下单然后就会跳转到下面的网页基本上保持默认选项即可。可以看到“焊盘喷镀”有3个选项。在选择表面处理工艺时,应综合考虑产品的具体需求、环保法规以及成本等因素。例如,对于环保要求较高的消费电…

使用生成式人工智能进行软件测试1使用大型语言模型增强测试

1 使用大型语言模型增强测试 1.1 认识人工智能工具对测试和开发的影响 在过去,想要利用人工智能的个人必须具备开发、训练和部署人工智能模型的技能,或者有一个专家团队来完成这些任务,所有这些都会使在日常活动中使用人工智能成为一项昂贵而独特的工作。随着最近人工智能的…

20241319 《计算机基础与程序设计》课程总结

每周作业链接汇总第零周作业:链接,简要内容:自我介绍,课程预习与准备,建立个人技术博客,加入云班课.第一周作业:链接,简要内容:课程概论,工业革命与浪潮之巅,信息与信息安全,计算机系统概论,计算机安全,计算的限制,计算思维.第二周作业:链接,简要内容:数字化…

2024-2025-1 20241409《计算机基础与程序设计》第十五周学习总结

自我介绍很高兴加入2024计算机基础与程序设计 (北京电子科技学院 - 网络空间安全)的班级的大家庭。 第一周作业1.对《计算机基础与程序设计》进行了概述,有了基础的了解。 2.学习了有关2进制、8进制、10进制、16进制之间的转换。 第二周作业1.学习了《计算机科学概论》第一章,…

前端性能优化原理与实践笔记

知识体系与小册格局 写给读者 提起性能优化,大家现在脑海里第一时间会映射出什么内容呢? 可能是类似“雅虎军规”和《高性能 JavaScript》这样历久弥香的经典之作,也可能是搜索引擎聚合给你的一篇又一篇以性能优化为主题的个人或团队实践而来的“私货”。至少当我确定自己的…

20241420 《计算机基础与程序设计》课程总结

20241420 《计算机基础与程序设计》课程总结 每周作业链接汇总 第0周作业:自我介绍与展望 https://www.cnblogs.com/vincent2077/p/18432491第一周作业:安装Linux系统并根据每章内容提出先导提问 https://www.cnblogs.com/vincent2077/p/18438668第二周作业:《计算机科学概论…

2024-2025-1 20241317 《计算机基础与程序设计》课程总结

学号20241317 《计算机基础与程序设计》课程总结 (按顺序)每周作业链接汇总 第0周作业:自我介绍第一周作业:AI学习第二周作业:c语言程序设计第一章第三周作业:c语言程序设计第二章第四周作业:c语言程序设计第三章第五周作业:c语言程序设计第四章第六周作业:c语言程序设…

Linux服务器无Root权限安装Cuda方法及问题解决

CUDA 简介 什么是 CUDA ? CUDA(Compute Unified Device Architecture)是由 NVIDIA 提供的一种并行计算平台和编程模型,用于加速计算密集型任务。CUDA 允许开发者使用 GPU 的计算能力,通过并行处理来快速执行复杂的计算任务。 CUDA 包括以下主要组成部分:CUDA Toolkit:为…

开启家具组装新方式:产品说明书智能指导

在快节奏的现代生活中,人们越来越追求便捷与高效。无论是新房装修还是家具换新,家具组装已成为许多家庭不可避免的一项任务。然而,面对复杂多变的家具图纸和冗长的产品说明书,许多人常常感到无从下手,甚至因操作不当而损坏零件。为了解决这一难题,一种全新的家具组装方式…

2024-2025-1 20241408陈烨南《计算机基础与程序设计》课程总结

每周作业链接汇总 第0周作业 自我介绍 https://www.cnblogs.com/chenyenai/p/18432520第1周作业 计算机基础与程序设计中的问题提问 https://www.cnblogs.com/chenyenai/p/18439433第2周作业 阅读《计算机科学概论》第一章和《C语言程序设计》第一章,并进行总结 https://www.c…

# 学期(如2024-2025-1) 学号(如:20241402) 《计算机基础与程序设计》第15周学习总结

学期(如2024-2025-1) 学号(如:20241402) 《计算机基础与程序设计》第15周学习总结 作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个…

SpringBoot进阶教程(八十四)spring-retry

在日常的一些场景中, 很多需要进行重试的操作.而spring-retry是spring提供的一个基于spring的重试框架,某些场景需要对一些异常情况下的方法进行重试就会用到spring-retry。spring-retry可以帮助我们以标准方式处理任何特定操作的重试。在spring-retry中,所有配置都是基于简单…