linux常用的shell脚本

linux常用的shell脚本

  1. 检查系统负载:检查系统的负载情况,并在超过阈值时发送警报。可使用 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

  1. 备份文件:编写一个脚本以定期备份指定目录的文件。可以使用 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"
  1. 清理日志文件:编写一个脚本以清理旧的日志文件,保留最近的一段时间内的文件。可以使用 find 命令和条件语句来实现

#!/bin/bash
log_dir="/path/to/logs"
days_to_keep=7
find "$log_dir" -type f -name "*.log" -mtime +$days_to_keep -delete
  1. 监控服务状态:编写一个脚本以监控关键服务的运行状态,并在服务异常时发送警报。可以使用 systemctl 命令和条件语句来实现

#!/bin/bash
service_name="nginx"
if ! systemctl is-active --quiet "$service_name"; then
    echo "服务 $service_name 未运行" | mail -s "服务状态警报" xxx@example.com
fi
  1. 自动化部署:编写一个脚本以自动化部署应用程序或配置文件到多台服务器。可以使用 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
  1. 监控磁盘空间:编写一个脚本以监控系统磁盘空间使用情况,并在空间不足时发送警报。可以使用 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 "磁盘空间警报" xx@example.com
    fi
done <<< "$df_output"

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

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

8:批量修改服务器用户密码

# 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连接信息:旧密码

9:数据处理脚本:

#!/bin/bash
DATA_FILE="data.csv"OUTPUT_FILE="processed_data.csv"
# Remove header and extract specific columnstail -n +2 "$DATA_FILE" | cut -d ',' -f 1,3 > "$OUTPUT_FILE"echo "Data processing completed. Processed data saved to $OUTPUT_FILE"

10:自动化测试脚本:

 
#!/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
 

11:日常维护脚本:

 
#!/bin/bash
# Check disk space usagedf -h
# Check system loaduptime
# Check running processesps aux
# Check system logs for errorstail /var/log/syslog | grep "error"
# Check for available software updatesapt updateapt list --upgradable
12:性能优化脚本:
 
#!/bin/bash
# Check CPU usagetop -b -n 1 | grep "Cpu(s)"
# Check memory usagefree -h
# Check disk I/Oiostat
# Check network usageiftop
# Check for high load processesps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值