本案例要求编写脚本,实现以下需求, 找到使用bash作登录Shell的本地账户名 列出这些账户的shadow密码记录 按每行“账户名 --> 密码记录”保存到文件中
时间: 2024-05-01 08:21:48 浏览: 6
好的,这个需求可以通过以下脚本实现:
```bash
#!/bin/bash
# 找到使用bash作登录Shell的本地账户名
usernames=$(grep -E "/bash$" /etc/passwd | cut -d: -f1)
# 列出这些账户的shadow密码记录并保存到文件中
for username in $usernames; do
shadow=$(sudo grep -E "^$username:" /etc/shadow)
echo "$username --> $shadow" >> password_records.txt
done
```
脚本的实现步骤如下:
1. 使用 `grep` 命令查找所有使用 `bash` 作为登录 Shell 的本地账户名,并将结果保存在 `$usernames` 变量中。
2. 使用 `for` 循环遍历每个账户名。
3. 使用 `sudo grep` 命令查找该账户名的 shadow 密码记录,并将结果保存在 `$shadow` 变量中。
4. 使用 `echo` 命令将账户名和密码记录写入文件 `password_records.txt` 中。
请注意,该脚本需要使用 `sudo` 权限来读取 `/etc/shadow` 文件。如果您不具备该权限,请联系系统管理员进行授权。
相关问题
写出用chage -l列出所有本地用户账户的详细信息的shell脚本
以下是用chage -l列出所有本地用户账户的详细信息的shell脚本:
```bash
#!/bin/bash
# 使用 grep 命令过滤出所有本地用户账户的用户名
usernames=$(cat /etc/passwd | grep -vE '^(#|$)' | awk -F: '{print $1}')
# 遍历每个用户名,输出其详细信息
for username in $usernames
do
echo "User: $username"
chage -l $username
echo ""
done
```
这个脚本会先使用 grep 命令过滤出所有本地用户账户的用户名,然后使用 for 循环遍历每个用户名,最后使用 chage -l 命令输出该用户的详细信息。
要求编写一个shell脚本,实现计算机各个性能数据监控的功能,具体监控项目要求如下: 当前系统bash 内存剩余容量 磁盘剩余容量 计算机账户数量 当前登录账户数量 本机已安装的软件包数量
很高兴为您提供帮助!根据您的要求,编写一个 shell 脚本能够监控计算机各个性能数据,以下是该脚本代码:
#!/bin/bash
# 当前系统bash版本信息
echo "当前系统bash版本信息:"
echo $(bash --version)
# 当前系统内存剩余容量
echo "当前系统内存剩余容量:"
echo $(free -m | awk 'NR==2{printf "剩余内存:%sMB,使用率:%s%%\n", $4,$3*100/$2 }' )
# 磁盘剩余容量
echo "当前磁盘剩余容量:"
echo $(df -h | awk '$NF=="/"{printf "磁盘剩余容量:%dGB,使用率:%s\n", $4,$5}')
# 计算机账户数量
echo "计算机账户数量:"
echo $(id -u -n | wc -w)
# 当前登录账户数量
echo "当前登录账户数量:"
echo $(who | wc -l)
# 本机已安装的软件包数量
echo "本机已安装的软件包数量:"
echo $(dpkg -l | grep -c '^ii ')
请注意,此脚本需要以管理员身份运行,以便访问必要的信息。此外,该脚本可在Linux和Mac操作系统上运行,但在Windows上无法正常工作。希望能帮到您!