Shell脚本用于运维工具常见的功能和示例

常见功能:

  • 系统信息收集:收集系统的CPU、内存、磁盘等信息,以便进行性能监控和故障排查。
  • 日志分析:分析日志文件,提取关键信息,协助快速定位问题。
  • 配置管理:管理系统和应用程序的配置文件,包括备份、恢复和更新等操作。
  • 服务管理:启动、停止、重启和监控系统服务,确保服务的可用性和稳定性。
  • 定时任务管理:创建、修改和删除定时任务,执行自动化操作。
  • 远程连接:通过SSH或其他远程连接方式,远程登录并执行命令。
  • 网络检测:检测网络连通性、端口开放情况、域名解析等。
  • 安全加固:执行系统安全加固操作,如关闭不必要的服务、修改默认密码等。

shell用于实用的运维工具示例

系统信息收集:

示例:收集系统的CPU、内存、磁盘等信息,并输出到文件。

示例1:

#!/bin/bash

# 获取CPU信息
cpu_info=$(cat /proc/cpuinfo)

# 获取内存信息
memory_info=$(free -m)

# 获取磁盘信息
disk_info=$(df -h)

# 输出到文件
echo "$cpu_info" > system_info.txt
echo "$memory_info" >> system_info.txt
echo "$disk_info" >> system_info.txt

echo "System information collected and saved to system_info.txt"

示例2:

#!/bin/bash

echo "System Information"

# CPU信息
cpu_info=$(cat /proc/cpuinfo | grep "model name" | head -n 1 | awk -F ': ' '{print $2}')
echo "CPU: $cpu_info"

# 内存信息
memory_info=$(free -h | awk 'NR==2{print $2}')
echo "Memory: $memory_info"

# 磁盘信息
disk_info=$(df -h | awk '/^/dev/{print $1, $2}')
echo "Disk: $disk_info"

日志分析:

示例:分析日志文件中的错误信息,并统计出现次数。

示例1:

#!/bin/bash

# 日志文件路径
log_file="/var/log/app.log"

# 分析错误信息
error_count=$(grep -c "ERROR" "$log_file")

echo "Error count in $log_file: $error_count"

示例2:

#!/bin/bash

echo "Error Log Analysis"

# 日志文件路径
log_file="/var/log/nginx/error.log"

# 分析错误日志
error_count=$(grep -c "error" "$log_file")
echo "Error Count: $error_count"

# 获取最近的错误记录
recent_errors=$(grep "error" "$log_file" | tail -n 5)
echo "Recent Errors:"
echo "$recent_errors"

配置管理:

示例:备份和恢复配置文件。

示例1:

#!/bin/bash

# 配置文件路径
config_file="/etc/app.conf"

# 备份配置文件
backup_file="/tmp/app.conf.bak"

# 备份配置文件
cp "$config_file" "$backup_file"

echo "Configuration file backed up to $backup_file"

# 恢复配置文件
cp "$backup_file" "$config_file"

echo "Configuration file restored from $backup_file"

示例2:

#!/bin/bash

echo "Configuration Management"

# 配置文件路径
config_file="/etc/nginx/nginx.conf"

# 备份配置文件
backup_file="/var/backup/nginx.conf.$(date +%Y%m%d%H%M%S)"
cp "$config_file" "$backup_file"
echo "Config file backed up to: $backup_file"

# 恢复配置文件
restore_file="/var/backup/nginx.conf.20211201090000"
cp "$restore_file" "$config_file"
echo "Config file restored from: $restore_file"

服务管理:

示例:启动、停止和重启系统服务。

示例1:

#!/bin/bash

# 启动服务
start_command="systemctl start myservice"
$start_command

# 停止服务
stop_command="systemctl stop myservice"
$stop_command

# 重启服务
restart_command="systemctl restart myservice"
$restart_command

echo "Service management completed"

示例2:

#!/bin/bash

echo "Service Management"

# 启动服务
start_service() {
    local service="$1"
    systemctl start "$service"
    echo "Started service: $service"
}

# 停止服务
stop_service() {
    local service="$1"
    systemctl stop "$service"
    echo "Stopped service: $service"
}

# 重启服务
restart_service() {
    local service="$1"
    systemctl restart "$service"
    echo "Restarted service: $service"
}

# 主程序
service_name="nginx"

start_service "$service_name"
sleep 5
stop_service "$service_name"
sleep 2
restart_service "$service_name"

定时任务管理:

示例:添加和删除定时任务。

示例1:

#!/bin/bash

# 添加定时任务
add_task="crontab -l > mycron"
$add_task
echo "*/5 * * * * /path/to/script.sh" >> mycron
crontab mycron
rm mycron

echo "Cron task added"

# 删除定时任务
remove_task="crontab -l | grep -v '/path/to/script.sh' | crontab"
$remove_task

echo "Cron task removed"

示例2:

#!/bin/bash

echo "Cron Task Management"

# 添加定时任务
add_cron_task() {
    local task="$1"
    (crontab -l ; echo "$task") | crontab -
    echo "Cron task added: $task"
}

# 删除定时任务
remove_cron_task() {
    local task="$1"
    (crontab -l | grep -v "$task") | crontab -
    echo "Cron task removed: $task"
}

# 主程序
cron_task="*/5 * * * * /path/to/script.sh"

add_cron_task "$cron_task"
sleep 10
remove_cron_task "$cron_task"

远程连接:

示例:通过SSH连接到远程服务器并执行命令。

示例1:

#!/bin/bash

# 远程服务器信息
remote_server="user@remote-server"

# 执行远程命令
remote_command="ls /path/to/files"
ssh "$remote_server" "$remote_command"

示例2:

#!/bin/bash

# 远程服务器信息
remote_user="username"
remote_host="example.com"
remote_command="ls -l"

# SSH连接并执行命令
ssh -t "$remote_user@$remote_host" "$remote_command"

在这个示例中,我们定义了远程服务器的用户名(remote_user)、主机名(remote_host)和要执行的命令(remote_command)。然后,使用ssh命令进行远程连接,并使用-t选项为SSH分配一个伪终端,以便执行命令。

你可以根据需要修改示例中的远程服务器信息和命令,以满足你的具体需求。还可以在脚本中添加更多的SSH命令,如上传文件、下载文件等。

请注意,为了能够成功连接到远程服务器,你需要确保已经配置了SSH密钥认证或提供了远程服务器的密码。另外,也要确保远程服务器已经允许SSH连接。

网络检测:

示例:检测远程服务器的网络连通性。

#!/bin/bash

# 远程服务器地址
remote_server="remote-server"

# 检测网络连通性
ping -c 3 "$remote_server"

echo "Network connectivity test completed"

安全加固:

示例:修改系统用户的密码策略。

#!/bin/bash

# 修改密码策略
password_policy_file="/etc/login.defs"

sed -i 's/PASS_MAX_DAYS 99999/PASS_MAX_DAYS 90/' "$password_policy_file"
sed -i 's/PASS_MIN_DAYS 0/PASS_MIN_DAYS 7/' "$password_policy_file"
sed -i 's/PASS_WARN_AGE 7/PASS_WARN_AGE 14/' "$password_policy_file"

echo "Password policy updated"
© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
蒲桃梅酒的头像 - 鹿快
评论 共5条

请登录后发表评论