首页 > 系统相关 >linux常用的shell脚本

linux常用的shell脚本

时间:2024-04-18 11:44:18浏览次数:27  
标签:脚本 bin shell echo dir linux Check bash

linux常用的shell脚本

一、检查系统负载:检查系统的负载情况,并在超过阈值时发送警报。可使用 uptime 命令和条件语句来实现

#!/bin/bash
    CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')THRESHOLD=80THRESHOLD=80if (( $(echo "$CPU_USAGE > $THRESHOLD" | bc -l) )); then
    echo"CPU usage is high: $CPU_USAGE%"
    # Send alert email or trigger automated responsefi

二、备份文件:编写一个脚本以定期备份指定目录的文件。可以使用 cp 命令和 cron 作业调度程序来完成

#!/bin/bash
backup_dir="/path/to/backup"
source_dir="/path/to/source"
timestamp=$(date +%Y%m%d%H%M%S)
backup_file="backup_$timestamp.tar.gz"
tar czf "$backup_dir/$backup_file" "$source_dir"

三、清理日志文件:编写一个脚本以清理旧的日志文件,保留最近的一段时间内的文件。可以使用 find 命令和条件语句来实现

#!/bin/bash
log_dir="/path/to/logs"
days_to_keep=7
find "$log_dir" -type f -name "*.log" -mtime +$days_to_keep -delete

四、监控服务状态:编写一个脚本以监控关键服务的运行状态,并在服务异常时发送警报。可以使用 systemctl 命令和条件语句来实现

#!/bin/bash
service_name="nginx"
if ! systemctl is-active --quiet "$service_name"; then
    echo "服务 $service_name 未运行" | mail -s "服务状态警报" [email protected]
fi

五、自动化部署:编写一个脚本以自动化部署应用程序或配置文件到多台服务器。可以使用 rsync 命令和循环结构来实现

#!/bin/bash
servers=("server1" "server2" "server3")
source_dir="/path/to/source"
destination_dir="/path/to/destination"
for server in "${servers[@]}"; do
    rsync -avz "$source_dir" "$server:$destination_dir"
done

六、监控磁盘空间:编写一个脚本以监控系统磁盘空间使用情况,并在空间不足时发送警报。可以使用 df 命令和条件语句来实现

#!/bin/bash
threshold=90
df_output=$(df -h)
while read -r line; do
    usage=$(echo "$line" | awk '{print $5}' | sed 's/%//')
    if (( usage > threshold )); then
        echo "磁盘空间不足: $line" | mail -s "磁盘空间警报" [email protected]
    fi
done <<< "$df_output"

七、启动/停止服务:编写一个脚本以同时启动或停止多个服务可以使用 systemctl 命令和循环结构来实现

#!/bin/bash
services=("service1" "service2" "service3")
action="start"  # 或者 "stop"
for service in "${services[@]}"; do
    systemctl "$action" "$service"
done

八、批量修改服务器用户密码

# cat old_pass.txt   
192.168.18.217  root    123456     22  
192.168.18.218  root    123456     22  
内容格式:IP User Password Port  

SSH远程修改密码脚本:新密码随机生成  
https://www.linuxprobe.com/books  
#!/bin/bash  
OLD_INFO=old_pass.txt  
NEW_INFO=new_pass.txt  
for IP in $(awk '/^[^#]/{print $1}' $OLD_INFO); do  
    USER=$(awk -v I=$IP 'I==$1{print $2}' $OLD_INFO)  
    PASS=$(awk -v I=$IP 'I==$1{print $3}' $OLD_INFO)  
    PORT=$(awk -v I=$IP 'I==$1{print $4}' $OLD_INFO)  
    NEW_PASS=$(mkpasswd -l 8)  # 随机密码  
    echo "$IP   $USER   $NEW_PASS   $PORT" >> $NEW_INFO  
    expect -c "  
    spawn ssh -p$PORT $USER@$IP  
    set timeout 2  
    expect {  
        \"(yes/no)\" {send \"yes\r\";exp_continue}  
        \"password:\" {send \"$PASS\r\";exp_continue}  
        \"$USER@*\" {send \"echo \'$NEW_PASS\' |passwd --stdin $USER\r exit\r\";exp_continue}  
    }"  
done  
生成新密码文件:

# cat new_pass.txt   
192.168.18.217  root    n8wX3mU%      22  
192.168.18.218  root    c87;ZnnL      22  

Linux主机SSH连接信息:旧密码

九、数据处理脚本

#!/bin/bash

DATA_FILE="data.csv"
OUTPUT_FILE="processed_data.csv"

# Remove header and extract specific columns
tail -n +2 "$DATA_FILE" | cut -d ',' -f 1,3 > "$OUTPUT_FILE"
echo "Data processing completed. Processed data saved to $OUTPUT_FILE"

十、自动化测试脚本

#!/bin/bash

TEST_URL="http://example.com"
EXPECTED_RESPONSE="200 OK"
TEST_RESULT=$(curl -s -o /dev/null -w "%{http_code}" $TEST_URL)

if [ "$TEST_RESULT" = "$EXPECTED_RESPONSE" ]; then
    echo "Test passed: HTTP status code is 200 OK"
else
    echo "Test failed: HTTP status code is not 200 OK"
fi

十一、日常维护脚本

#!/bin/bash

# Check disk space usage
df -h

# Check system load
uptime

# Check running processes
ps aux

# Check system logs for errors
tail /var/log/syslog | grep "error"

# Check for available software updates
apt update
apt list --upgradable

十二、性能优化脚本

#!/bin/bash

# Check CPU usage
top -b -n 1 | grep "Cpu(s)"

# Check memory usage
free -h

# Check disk I/O
iostat

# Check network usage
iftop

# Check for high load processes
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu

 

标签:脚本,bin,shell,echo,dir,linux,Check,bash
From: https://www.cnblogs.com/hkgan/p/18143154

相关文章

  • 精通-Python-系统管理脚本编程(一)
    精通Python系统管理脚本编程(一)原文:zh.annas-archive.org/md5/c33d6613eafa4d86b92059a00f7aa16f译者:飞龙协议:CCBY-NC-SA4.0前言Python已经发展并扩展了其功能,涵盖了几乎所有可能的IT操作。本书将帮助你利用Python的最新功能,编写有效的脚本,并创建用于管理环境的命......
  • 精通-Python-系统管理脚本编程(四)
    精通Python系统管理脚本编程(四)原文:zh.annas-archive.org/md5/c33d6613eafa4d86b92059a00f7aa16f译者:飞龙协议:CCBY-NC-SA4.0第十六章:网络爬虫-从网站提取有用的数据在本章中,您将学习有关网络爬虫的知识。您还将学习Python中的beautifulsoup库,该库用于从网站提取信息。......
  • 工作中常用到的Linux命令
    思维导航系统,用户信息操作相关命令查看系统发行版本权限控制命令运行控制启动命令目录、文件、文本管理相关命令查看历史命令参考文章系统,用户信息操作相关命令查看主机ip地址ifconfig获取用户信息id修改用户密码passwd查看链接用户who创建新用户账号use......
  • xShell终端中文乱码问题的解决办法
    转载于CSND,原创作者:师傅我坚持不住了原文链接:https://blog.csdn.net/LuoFan_A/article/details/136713014xShell终端中文乱码问题的终极解决方案在与Linux系统进行交互时,我们经常会遇到终端中文显示乱码的问题。这不仅影响阅读体验,还可能导致命令理解错误,从而引发一系列问题。......
  • java代码审计跨站脚本(XSS)--反射型
    一、基础:跨站脚本(Xss)一、原理:恶意攻击者往web页面里插入恶意js代码,而在服务端没有对数据进行严格的过滤。当用户浏览页面时,js代码必须在该html页面中(hrml必须要存在这个而已艾玛),从而达到攻击用户的目的。(攻击者构造的的js代码会被当作正常的HTML、JS代码被解析,执行Js脚本实现攻......
  • blender python api 使用脚本对所有帧 进行全方位渲染
    代码:importbpy#定义要使用的物体placement_ob=bpy.context.scene.objects['Sphere']#'Sphere'是要渲染的物体名称camera_ob=bpy.context.scene.objects['Camera']#'Camera'是摄像机的名称render=bpy.context.scene.render#获取渲染场景的引......
  • blender python api 使用脚本对一个静帧 进行全方位渲染
     代码:importbpy#Definewhichobjectstouseplacement_ob=bpy.context.scene.objects['Sphere']camera_ob=bpy.context.scene.objects['Camera']render=bpy.context.scene.render#Settherenderpathrender_path='renders\......
  • Linux常用命令知识点总结
    目录目录目录基础指令Linux命令基本格式文件操作文件格式文件权限创建文件查看文件删除文件移动文件复制文件编辑文件查找文件查找命令路径vim文本编辑器一般指令模式(commandmode)编辑模式(insertmode)指令列命令模式command-linemode目录操作打印路径查看目录切换目录创建目......
  • 安装阿里普惠字体-以及部分linux命令整理
    安装阿里普惠字体背景字符编码-字符集-字体信息技术数据的承载体工作中很多时候都需要用到相关内容.字符编码绝对每个字符对应的编码形势,比如Unicode字符集.还有国内的GB2312等.字符集是对字符编码进行一定的规整,便于网络传输与展示等效果比如UTF32定长字符和UTF8边......
  • Linux文件和目录管理
    一、目录与路径绝对路径:一定由根目录/写起相对路径:不是由根目录/写起,转换路径的时候使用.代表当前所在的目录..代表上层目录-代表前一个工作目录~代表自己的家目录~user代表userd的个人的家目录目录的相关操作和路径变量(1)cd变换目录(2)pwd显示当前所在的目录(3)mkdir......