apache html调用bash脚本案例

news2024/9/23 21:31:20

首先安装apache服务,采用yum的方式即可,因为用到的都是apache的基本功能,不需要编译安装

yum -y install httpd

然后准备html页面,这个页面其实就是调用bash脚本的页面,提供页面操作然后调用服务器上的脚步文件

网页布局建议用adobe的软件操作

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<script>
function httpGet(url)
{
        var xmlHttp = new XMLHttpRequest();
        xmlHttp.open("GET", url, false); // false: wait respond
        xmlHttp.send(null);
        return xmlHttp.responseText;
}
function f()
{
        var url = "http://172.16.61.119:8098/cgi-bin/shell?ram%20"+ document.getElementById('in').value;
        document.getElementById('out_f').innerHTML = httpGet(url);
}
function h()
{
        var url = "http://172.16.61.119:8098/cgi-bin/shell?addram%20"+ document.getElementById('ID').value+ document.getElementById('NAME').value;
        document.getElementById('out_h').innerHTML = httpGet(url);
}
</script>

<title>阿里云RAM用户管理平台</title>
</head>

<body background="img/feicui.jpg">
<table align="center" width="1000" height="500" border="1" bordercolor="black">

  <tr>    <tr>
    <td colspan="3" height="10"><div align="center">
      <h2>初始化用户密码<h2/></div>      <div align="justify"></div>      <div align="left"></div></td>
  </tr>
    <th width="700" height="50" scope="col"><div align="left"><span > 阿里云ram用户ID(企业邮箱前缀) </span></div></th>
    <th width="700" scope="col"><div align="left"><input id='in'></input></div></th>
    <th width="700" scope="col"><div align="left"><button onclick='f()'>初始化密码</button></div></th>
  </tr>
  <tr>
    <td colspan="3" height="80"><div align="left"><pre id='out_f'></pre></div>      <div align="justify"></div>      <div align="left"></div></td>
  </tr>
      <tr>
    <td colspan="3"><div align="center">
    <h2>新增用户<h2/></div>      <div align="justify"></div>      <div align="center"></div></td>
  </tr>
  <tr>
    <td height="50"><div align="left">
      <div align="left"><span>阿里云ram用户ID(企业邮箱前缀)</span></div>
    </div></td>
    <td height="50"><div align="left"><input id='ID'></input></div></td>
    <td rowspan="2"><div align="left"><button onclick='h()'>新增用户</button></div></td>
  </tr>
    <tr>
    <td height="50"><div align="left">
      <div align="left"><span>中文姓名(必须以中文开头)</span></div>
    </div></td>
    <td><div align="left"><input id='NAME'></input></div></td>
  </tr>
    <tr>
    <td colspan="3" height="80"><div align="left">
      <pre id='out_h'>
</pre></div>      <div align="justify"></div>      <div align="left"></div></td>
  </tr>
</table>
</body>
</html>

注释

1、这里调用的脚本其实有两个(定义了两个函数)

1.1 这里要实现的功能就是初始化ram用户的密码

可以which ram可以查询到这个脚本文件(可以理解脚本必须在全局变量(PATH里))

function f()
{
        var url = "http://172.16.61.119:8098/cgi-bin/shell?ram%20"+ document.getElementById('in').value;
        document.getElementById('out_f').innerHTML = httpGet(url);
}

脚本其实就是(这里调用的aliyun的工具是阿里云提供的,我们按照要求配置好即可)

/usr/local/bin/ram

#cat  /usr/local/bin/ram
#!/bin/bash
Password=`openssl rand -base64 16`
UserName=$1
Check_User=`aliyun ram ListUsers --pager  --region cn-hangzhou|grep -w $UserName`
if [ "$Check_User" != "" ];then
	/usr/bin/aliyun ram UpdateLoginProfile --region cn-hangzhou --UserName $UserName --Password $Password  2>&1  >/tmp/ram.txt
	if [ "$?" == 0 ];then
		echo  "登录地址: https://signin.aliyun.com/yysj.onaliyun.com/login.htm";
		echo  "登录账号: $UserName@yysj.onaliyun.com";
		echo  "登录密码(首次登录需要更新密码): $Password";
		echo  "登录地址: https://signin.aliyun.com/yysj.onaliyun.com/login.htm ; 登录账号: $UserName@yysj.onaliyun.com ; 登录密码(首次登录需要更新密码): $Password" | mailx -s "阿里云ram账号管理" $UserName@taetea.com.cn 2>/dev/null
	fi
else
	echo "$UserName 并非阿里云子用户 请联系熊运龙添加";
fi

1.2这里要实现的功能就是新增ram用户

可以which addram可以查询到这个脚本文件(可以理解脚本必须在全局变量(PATH里))

这里要实现的功能就是新增ram用户

function h()
{
        var url = "http://172.16.61.119:8098/cgi-bin/shell?addram%20"+ document.getElementById('ID').value+ document.getElementById('NAME').value;
        document.getElementById('out_h').innerHTML = httpGet(url);
}

脚本其实就是

/usr/local/bin/addram(这里调用的aliyun的工具是阿里云提供的,我们按照要求配置好即可)

#cat  /usr/local/bin/addram
#!/bin/bash
Parameter=$1
UserName=`echo $Parameter|sed 's/[A-Za-z]\+/& /'|awk '{print $1}'`
DisplayName=`echo $Parameter|sed 's/[A-Za-z]\+/& /'|awk '{print $2}'`
Password=`openssl rand -base64 16`
if [ "$UserName" == "" ] || [ "$DisplayName" == "" ];then
	echo "Please Enter ID And Name of  User!!"
else
	Check_User_Id=`aliyun ram ListUsers --pager  --region cn-hangzhou|grep -w $UserName` >/dev/null 2>&1
	if [ "$Check_User_Id" == "" ];then
		###创建子用户
		aliyun ram CreateUser --region cn-hangzhou --UserName $UserName --DisplayName  "$DisplayName" >/dev/null 2>&1
		###创建AK SK
		###开启自主管理密码
		aliyun ram SetSecurityPreference --region cn-hangzhou --AllowUserToChangePassword true >/dev/null 2>&1
		###设置密码,并且要求首次登录之后必须修改密码
		aliyun ram CreateLoginProfile --region cn-hangzhou --UserName $UserName --PasswordResetRequired true --Password "$Password" >/dev/null 2>&1
		echo "登录地址:https://signin.aliyun.com/yysj.onaliyun.com/login.htm";
		echo "登录账号:$UserName@yysj.onaliyun.com";
		echo "登录密码(首次登录需要更新密码):$Password"
	else
		echo "$UserName is  exist!!!!"
	fi
fi

实际效果图

PS: 在配置aliyun这个工具的时候有个容易遗漏的地方

就是  /.aliyun/config.json  阿里云的配置文件需要在根目录下,否则调用不成功

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【嵌入式UI框架:LVGL】使用恩智浦GUI设计工具,像Qt一样开发MCU界面

LVGL是一个免费的开源嵌入式图形库&#xff0c;它提供创建嵌入式GUI所需的功能&#xff0c;具有易于使用的图形元素、精美的视觉效果和低内存占用。完整的图形框架包括供您在创建GUI时所用的各种小部件&#xff0c;并支持更高级的功能&#xff0c;例如动画和抗锯齿。 一、工具&…

springcloud入门

微服务架构介绍 微服务架构&#xff0c; 简单的说就是将单体应用进一步拆分&#xff0c;拆分成更小的服务&#xff0c;每个服务都是一个可以独 立运行的项目。 微服务架构的常见问题 一旦采用微服务系统架构&#xff0c;就势必会遇到这样几个问题&#xff1a; 这么多小服务…

MYSQL——毫秒值和日期类型数据的转换,DATE_SUB的用法

MYSQL——毫秒值和日期类型数据的转换&#xff0c;DATE_SUB的用法一、毫秒值转换成日期数据类型二、日期数据类型转换成毫秒值三、DATE_SUB的用法一、毫秒值转换成日期数据类型 语法&#xff1a;FROM_UNIXTIME(毫秒值字段,‘%Y-%m-%d %h:%i:%s’) 举例&#xff1a; select id…

spring-boot-starter-aop及其使用场景说明

如今&#xff0c;AOP&#xff08;Aspect Oriented Programming&#xff09;已经不是什么崭新的概念了&#xff0c;在经历了代码生成、动态代理、字节码增强甚至静态编译等不同时代的洗礼之后&#xff0c;Java 平台上的 AOP 方案基本上已经以 SpringAOP 结合 AspectJ 的方式稳固…

基于独立分量分析进行模态分解(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

[附源码]计算机毕业设计基于Springboot在线教育系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Mysql详细安装步骤

目录 1、解压服务端Mysql安装包 2.复制改变my.ini文件 3、安装MySQL服务 4、启动mysql服务 6.记录初始密码&#xff0c;利用初始密码登录 &7.改变MySQL链接密码 1、解压服务端Mysql安装包 解压之后的目录就是以上这样的。 2.复制改变my.ini文件 把my.ini文件添加…

【计算机图形学入门】笔记3:变换Transformation(二维与三维)

第三章.Transformation变换&#xff08;二维与三维&#xff09;1.为什么要学习变换&#xff1f;2.变换的几种形式1.缩放2.相对于y轴翻转3.Shear Matrix 切片4.旋转3.齐次坐标1.平移变换2.齐次坐标的引入3.使用齐次坐标表示上述变换4.组合变换5.分解变换6.三维空间中的变换1.三维…

QT 系统学习 day03 了解各种控件,文件操作,消息框,windows应用界面的 生成菜单栏, 状态栏,中心部件,工具栏,

1. 控件&#xff0c; 旋钮 &#xff0c;进度条&#xff0c; 我也不知道叫啥&#xff0c; 相关的代码&#xff1b; 首先是函数 1.旋钮函数 &#xff08;槽函数都有说明&#xff09;&#xff08;Dial&#xff09; ui->dial->setRange(0,100);//设置旋钮的范围ui->di…

Three.js一学就会系列:01 第一个3D网站

文章目录前言一、Three.js是什么&#xff1f;官网官网示例效果尝鲜二、使用步骤1.引入three.js库2.使用方法创建一个场景创建一个透视摄像机将渲染器添加到页面上创建一个立方体渲染场景立方体动起来效果总结前言 最近开始入坑前端3D建站&#xff0c;跟大家一起慢慢深入three.…

Android 面试拒收Offer篇,这样做对吗?

作者&#xff1a;如梦 如梦朦胧 朋友们的劝说下&#xff0c;有了换工作的躁动,然后投了某度的Android岗位,本以为像我这种非211、985没工作经验的渣渣只能被直接pass,结果却意外的收到了电话,真是受宠若惊.经过电面,技术三面,然后就是等通知到最后拿到了OFFER,如梦一般,真是挺…

性能优化:Redis使用优化(1)

参考资料&#xff1a; 《Redis为什么变慢了&#xff1f;一文讲透如何排查Redis性能问题 | 万字长文》 相关文章&#xff1a; 《Redis&#xff1a;内存淘汰机制》 《Redis&#xff1a;持久化RDB与AOF》 《Redis&#xff1a;主从复制》 写在开头&#xff1a;本文为学习后的总…

Spring中事务失效的场景

文章目录1 抛出检查异常导致事务不能正确回滚1.1 异常演示1.2 解决办法2 业务方法内自己 try-catch 异常导致事务不能正常回滚1.1 异常演示1.2 解决办法3 aop切面顺序导致事务不能正确回滚3.1 异常演示3.2 解决办法4 非 public 方法导致事务的失效4.1 异常演示4.2 解决办法5 父…

深度学习-全卷积神经网络(FCN)

1. 简介 全卷积神经网络&#xff08;Fully Convolutional Networks&#xff0c;FCN&#xff09;是Jonathan Long等人于2015年在Fully Convolutional Networks for Semantic Segmentation一文中提出的用于图像语义分割的一种框架&#xff0c;是深度学习用于语义分割领域的开山之…

【目标检测】【DDPM】DiffusionDet:用于检测的概率扩散模型

文章目录摘要一、Introduction二、相关工作三、方法1.准备工作2.架构3、训练4.预测过程四. 实验1.训练策略2.main property3.消融实验五、代码分析1.测试 demo.py2.训练 train-net.py总结摘要 我们提出了扩散det&#xff0c;一个新的框架&#xff0c;将目标检测作为一个从噪声…

OpenGL基础程序结构

用OpenGL编写的程序结构类似于用其他语言编写的程序。实际上&#xff0c;OpenGL是一个丰富的三维图形函数库&#xff0c;编写OpenGL程序并非难事&#xff0c;只需在基本C语言中调用这些函数&#xff0c;用法同Turbo C、Microsoft C等类似&#xff0c;但也有许多不同之处。   …

[附源码]Python计算机毕业设计Django校园招聘系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

功能测试求职难,现在不懂自动化测试连外包都进不去了?

功能测试求职难 最近因为公司政策原因&#xff0c;部分外包被裁员&#xff0c;其中不乏能力还不错&#xff0c;工作也挺踏实的&#xff0c;比较可惜&#xff0c;为了帮助他们尽快找到下家&#xff0c;我这边也开始帮他们关注招聘情况&#xff0c;发现一个挺让我意外的事情。在…

Java中CAS详解

一、什么是CAS 什么是CAS机制 CAS机制是一种数据更新的方式。在具体讲什么是CAS机制之前&#xff0c;我们先来聊下在多线程环境下&#xff0c;对共享变量进行数据更新的两种模式&#xff1a;悲观锁模式和乐观锁模式。 悲观锁更新的方式认为&#xff1a;在更新数据的时候大概率…

Android 动画和过渡

Android 动画和过渡 &#xff08;一&#xff09; 动画 JetpackCompose提供了强大且可扩展的API&#xff0c;可以轻松地在应用程序的UI中实现各种动画。下面描述了如何使用这些API以及根据动画场景使用哪些API。 动画在现代移动应用程序中至关重要&#xff0c;以实现流畅和可理解…