ecs服务器shell常用脚本练习(九)

简介: 【4月更文挑战第10天】shell代码训练(八)

1. 将Linux 系统中UID 大于等于1000 的普通用户都删除

#!/bin/bash

#先用awk 提取所有uid 大于等于1000 的普通用户名称

#再使用for 循环逐个将每个用户删除即可

user=$(awk ‐F: '$3>=1000{print $1}' /etc/passwd)

for i in $user

do

userdel ‐r $i

done

2. 使用脚本开启关闭虚拟机

#!/bin/bash

#脚本通过调用virsh 命令实现对虚拟机的管理,如果没有该命令,需要安装libvirt‐client 软件包

#$1 是脚本的第1 个参数,$2 是脚本的第2 个参数

#第1 个参数是你希望对虚拟机进行的操作指令,第2 个参数是虚拟机名称

case $1 in

list)

virsh list ‐‐all;;

start)

virsh start $2;;

stop)

virsh destroy $2;;

enable)

virsh autostart $2;;

disable)

virsh autostart ‐‐disable $2;;

*)

echo "Usage:$0 list"

echo "Usage:$0 [start|stop|enable|disable] VM_name"

cat << EOF

list 显示虚拟机列表

start 启动虚拟机

stop 关闭虚拟机

enable 设置虚拟机为开机自启

disable 关闭虚拟机开机自启功能

EOF

;;

esac

3. 调整虚拟机内存参数的shell 脚本

#!/bin/bash

#脚本通过调用virsh 命令实现对虚拟机的管理,如果没有该命令,需要安装libvirt‐client 软件包

cat << EOF

1.调整虚拟机最大内存数值

2.调整实际分配给虚拟机的内存数值

EOF

read ‐p "请选择[1‐2]:" select

case $select in

1)

read ‐p "请输入虚拟机名称" name

read ‐p "请输入最大内存数值(单位:k):" size

virsh setmaxmem $name ‐‐size $size ‐‐config;;

2)

read ‐p "请输入虚拟机名称" name

read ‐p "请输入实际分配内存数值(单位:k):" size

virsh setmem $name $size;;

*)

echo "Error";;

esac

4. 查看KVM 虚拟机中的网卡信息(不需要进入启动或进入虚拟机)

#!/bin/bash

#该脚本使用guestmount 工具,可以将虚拟机的磁盘系统挂载到真实机文件系统中

#Centos7.2 中安装libguestfs‐tools‐c 可以获得guestmount 工具

#虚拟机可以启动或者不启动都不影响该脚本的使用

#将虚拟机磁盘文件挂载到文件系统后,就可以直接读取磁盘文件中的网卡配置文件中的数据

clear

mountpoint="/media/virtimage"

[ ! ‐d $mountpoint ]&& mkdir $mountpoint

read ‐p "输入虚拟机名称:" name

echo "请稍后..."

#如果有设备挂载到该挂载点,则先umount 卸载

if mount | grep ‐q "$mountpoint" ;then

umount $mountpoint

fi

#只读的方式,将虚拟机的磁盘文件挂载到特定的目录下,这里是/media/virtimage 目录

guestmount ‐r ‐d $name ‐i $mountpoint

echo

echo "‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"

echo ‐e "\033[32m$name 虚拟机中网卡列表如下:\033[0m"

dev=$(ls /media/virtimage/etc/sysconfig/network‐scripts/ifcfg‐* |awk ‐F"[/‐]" '{print $9}')

echo $dev

echo "‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"

echo

echo

echo "+++++++++++++++++++++++++++++++++++++++++++"

echo ‐e "\033[32m 网卡IP 地址信息如下:\033[0m"

for i in $dev

do

echo ‐n "$i:"

grep ‐q "IPADDR" /media/virtimage/etc/sysconfig/network‐scripts/ifcfg‐$i || echo "未配置IP

地址"

awk ‐F= '/IPADDR/{print $2}' /media/virtimage/etc/sysconfig/network‐scripts/ifcfg‐$i

done

echo "+++++++++++++++++++++++++++++++++++++++++++"

5. 不登陆虚拟机,修改虚拟机网卡IP 地址

#!/bin/bash

#该脚本使用guestmount 工具,Centos7.2 中安装libguestfs‐tools‐c 可以获得guestmount 工具

#脚本在不登陆虚拟机的情况下,修改虚拟机的IP 地址信息

#在某些环境下,虚拟机没有IP 或IP 地址与真实主机不在一个网段

#真实主机在没有virt‐manger 图形的情况下,远程连接虚拟机很麻烦

#该脚本可以解决类似的问题

read ‐p "请输入虚拟机名称:" name

if virsh domstate $name |grep ‐q running ;then

echo "修改虚拟机网卡数据,需要关闭虚拟机"

virsh destroy $name

fi

mountpoint="/media/virtimage"

[ ! ‐d $mountpoint ]&& mkdir $mountpoint

echo "请稍后..."

if mount | grep ‐q "$mountpoint" ;then

umount $mountpoint

fi

guestmount ‐d $name ‐i $mountpoint

read ‐p "请输入需要修改的网卡名称:" dev

read ‐p "请输入IP 地址:" addr

#判断原本网卡配置文件中是否有IP 地址,有,就修改该IP,没有,就添加一个新的IP 地址

if grep ‐q "IPADDR" $mountpoint/etc/sysconfig/network‐scripts/ifcfg‐$dev ;then

sed ‐i "/IPADDR/s/=.*/=$addr/" $mountpoint/etc/sysconfig/network‐scripts/ifcfg‐$dev

else

echo "IPADDR=$addr" >> $mountpoint/etc/sysconfig/network‐scripts/ifcfg‐$dev

fi

#如果网卡配置文件中有客户配置的IP 地址,则脚本提示修改IP 完成

awk ‐F= ‐v x=$addr '$2==x{print "完成..."}' $mountpoint/etc/sysconfig/network‐scripts/ifcfg‐

$dev

6. 破解虚拟机密码,无密码登陆虚拟机系统

#!/bin/bash

#该脚本使用guestmount 工具,Centos7.2 中安装libguestfs‐tools‐c 可以获得guestmount 工具

read ‐p "请输入虚拟机名称:" name

if virsh domstate $name |grep ‐q running ;then

echo "破解,需要关闭虚拟机"

virsh destroy $name

fi

mountpoint="/media/virtimage"

[ ! ‐d $mountpoint ]&& mkdir $mountpoint

echo "请稍后..."

if mount | grep ‐q "$mountpoint" ;then

umount $mountpoint

fi

guestmount ‐d $name ‐i $mountpoint

#将passwd 中密码占位符号x 删除,该账户即可实现无密码登陆系统

sed ‐i "/^root/s/x//" $mountpoint/etc/passwd

7. Shell 脚本对信号的处理,执行脚本后,按键盘Ctrl+C 无法终止的脚本

#!/bin/bash

#使用trap 命令可以拦截用户通过键盘或kill 命令发送过来的信号

#使用kill ‐l 可以查看Linux 系统中所有的信号列表,其中2 代表Ctrl+C

#trap 当发现有用户ctrl+C 希望终端脚本时,就执行echo "暂停10s";sleep 10 这两条命令

#另外用户使用命令:[ kill ‐2 脚本的PID ] 也可以中断脚本和Ctrl+C 一样的效果,都会被trap 拦截

trap 'echo "暂停10s";sleep 10' 2

while :

do

echo "go go go"

done

8. 一键部署memcached

#!/bin/bash

#脚本用来源码安装memcached 服务器

#注意:如果软件的下载链接过期了,请更新memcached 的下载链接

wget http://www.memcached.org/files/memcached‐1.5.1.tar.gz

yum ‐y install gcc

tar ‐xf memcached‐1.5.1.tar.gz

cd memcached‐1.5.1

./configure

make

make install

9. 一键配置VNC 远程桌面服务器(无密码版本):

#!/bin/bash

#脚本配置的VNC 服务器,客户端无需密码即可连接

#客户端仅有查看远程桌面的权限,没有鼠标和键盘的操作权限

if [ $? ‐ne 0 ];then

yum ‐y tigervnc‐server

fi

x0vncserver AcceptKeyEvents=0 AlwaysShared=1 \

AcceptPointerEvents=0 SecurityTypes=None rfbport=5908

10. 关闭SELinux

#!/bin/bash

sed ‐i '/^SELINUX/s/=.*/=disabled/' /etc/selinux/config

setenforce 0

如果想上手操作练代码的同学们可以通过阿里云ecs服务器免费试用参与!

入口一:新老同学免费试用

入口二:上云第一站

入口三:学生版超低价云服务器

入口四:云服务器专享特惠版

入口五:云服务器特惠1.5折起

入口七:阿里云最新活动中心

入口八:中小企业权益满减礼包


相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
570 9
|
6月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
567 2
|
9月前
|
Shell
Shell脚本循环控制:shift、continue、break、exit指令
使用这些命令可以让你的Shell脚本像有生命一样动起来。正确使用它们,你的脚本就能像一场精心编排的舞蹈剧目,既有旋律的起伏,也有节奏的跳跃,最终以一场惊艳的表演结束。每一个动作、每一个转折点,都准确、优雅地完成所需要表达的逻辑。如此,你的脚本不只是冰冷的代码,它透过终端的界面,跳着有节奏的舞蹈,走进观众——使用者的心中。
338 60
|
6月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。
|
8月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
964 1
|
10月前
|
存储 Unix Shell
确定Shell脚本在操作系统中的具体位置方法。
这对于掌握Linux的文件系统组织结构和路径方面的理解很有帮助,是我们日常工作和学习中都可能使用到的知识。以上讲解详细清晰,应用简便,是每一个想要精通操作系统的计算机爱好者必备的实用技能。
391 17
|
11月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
1331 25
|
10月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
299 4
|
10月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
547 3
|
11月前
|
安全 Linux
阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
785 28