1.准备阶段
在根目录下创建一个目录来存储shell脚本
mkdir /s3
2.题目
1. 使用case实现成绩优良差的判断
#!/bin/bash
# 假设成绩存储在变量GRADE中
read -p "请输入成绩(0-100):" GRADE
# 使用case语句进行判断
case $GRADE in
[8-9][0-9]|100)
echo "成绩是:优秀"
;;
[6-7][0-9])
echo "成绩是:良好"
;;
[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9])
echo "成绩是:bu及格"
;;
*)
echo "无效的成绩输入"
;;
esac
2. for创建20个用户,用户前缀由用户输入,用户初始密码由用户输入,例如:test01,test10
#!/bin/bash
#########################
#File name:b.sh
#Version:v1.0
#Email:admin@test.com
#Created time:2024-11-28 20:56:58
#Description:
#########################
read -p "请输入用户前缀:" userf
read -p "请输入初始密码:" passwd
users=$(seq -f "$userf%02g" 1 20)
for user in $users
do
id $user &>/dev/null
if [ $? -eq 0 ];then
echo "用户已存在"
else
useradd $user
echo $passwd | passwd --stdin $user
fi
done
3. for ping测试指网段的主机,网段由用户输入,例如用户输入192.168.2 ,则ping 192.168.2.10 --- 192.168.2.20 另外日志存储在以下文件中:
UP: /tmp/host_up.txt
Down: /tmp/host_down.txt
#!/bin/bash
#########################
#File name:c.sh
#Version:v1.0
#Email:admin@test.com
#Created time:2024-11-28 20:57:28
#Description:
#########################
read -p "请输入你需要测试的网段:" segment
i=132
until [ $i -gt 140 ]
do
if ping -c 2 "$segment.$i" &>/dev/null;then
echo "主机$segment.$i可达..." >> /tmp/host_up.txt
else
echo "主机$segment.$i不可达..." >> /tmp/host_down.txt
fi
let i++
done
4. 使用for实现批量主机root密码的修改
成功或失败都必须记录
提示:主机IP存放在一个文件中
SSH:实现公钥认证,执行远程中主机命令
实现公钥认证
首先需要在当前目录下创建文件hosts_ip.txt
touch hosts_ip.txt
在该文件中添加以下格式的ip
然后再创建日志文件password_change_log.txt
touch password_change_log.txt
最后在脚本文件中添加以下内容:
#!/bin/bash
#########################
#File name:d.sh
#Version:v1.0
#Email:admin@test.com
#Created time:2024-11-29 20:35:41
#Description:
#########################
#读取主机ip列表
hosts_file="hosts_ip.txt"
password="123"
log_file="password_change_log.txt"
#检查是否存在主机列表文件
if [ ! -f "$hosts_file" ];then
echo "主机列表文件不存在!"
exit 1
fi
#生成ssh密钥对(如果尚未生成)
if [ ! -f ~/.ssh/id_rsa ];then
echo "未找到ssh密钥对,正在生成..."
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -N ""
echo "ssh密钥对生成成功"
fi
#为每个主机复制公钥以启用ssh公钥认证
for host in $(cat "$hosts_file");do
echo "正在为主机$host配置公钥认证..."
ssh-copy-id -i ~/.ssh/id_rsa.pub "root@$host" >> "$log_file" 2>&1
if [ $? -eq 0 ];then
echo "公钥认证成功:$host" >> "$log_file"
else
echo "公钥认证失败:$host" >> "$log_file"
continue
fi
done
#批量修改root密码
for host in $(cat "$hosts_file")
do
echo "正在修改$host上的root密码..."
#使用ssh执行远程命令修改root密码
ssh "root@$host" "echo 'root:$password' | chpasswd" >> "$log_file" 2>&1
if [ $? -eq 0 ];then
echo "密码修改成功:$host" >> "$log_file"
else
echo "密码修改失败:$host" >> "$log_file"
fi
done
echo "操作完成,结果请查看日志文件$log_file"