用shell脚本写在程序执行的2分钟内,每隔10秒检查指定的用户是否登录系统,用户名从命令行输入。 如果在2分钟内,用户登录,则显示用户信息,并退出循环; 如果检查时间大于2分钟,则退出循环,不再执行。
时间: 2024-02-20 18:59:35 浏览: 34
好的,以下是一个可以实现在程序执行的2分钟内,每隔10秒检查指定的用户是否登录系统的 Shell 脚本:
```bash
#!/bin/bash
# 获取输入的用户名
username=$1
# 定义循环开始时间和结束时间
start_time=$(date +%s)
end_time=$((start_time + 120))
# 循环检查用户是否登录系统
while [[ $(date +%s) -lt $end_time ]]
do
# 检查用户是否登录
if who | grep -wq $username; then
# 显示用户信息并退出循环
echo "$username has logged in"
exit 0
fi
# 等待 10 秒
sleep 10
done
# 如果循环执行时间大于 2 分钟,则退出循环
echo "Timeout, $username has not logged in"
exit 1
```
在运行脚本时,需要在命令行输入用户名作为参数,例如 `./filename.sh username`。脚本会在程序执行的2分钟内每隔10秒检查指定的用户是否登录系统,如果用户登录,则显示用户信息并退出循环;如果检查时间大于2分钟,则退出循环,不再执行。
相关问题
用shell编写在程序执行的2分钟内,每隔10秒检查指定的用户是否登录系统,用户名从命令行输入。 如果在2分钟内,用户登录,则显示用户信息,并退出循环; 如果检查时间大于2分钟,则退出循环,不再执行的脚本
好的,我可以为您编写这样一个脚本。请确认您的操作系统是Linux,并且已经安装了bash shell。
以下是脚本代码:
```bash
#!/bin/bash
# 获取命令行传入的用户名
username=$1
# 获取当前时间戳
start_time=$(date +%s)
# 循环检查用户是否登录,每隔10秒检查一次
while true; do
# 获取指定用户的登录信息
login_info=$(who | grep $username)
# 如果用户已经登录,则输出登录信息并退出循环
if [ -n "$login_info" ]; then
echo "$login_info"
break
fi
# 获取当前时间戳
current_time=$(date +%s)
# 如果检查时间已经超过2分钟,则退出循环
if [ $((current_time - start_time)) -gt 120 ]; then
break
fi
# 等待10秒再进行下一次检查
sleep 10
done
```
您可以将以上代码保存为一个.sh文件,比如说check_user_login.sh,并且为该文件添加执行权限:
```
chmod +x check_user_login.sh
```
然后在命令行中执行该脚本,并指定要检查的用户名:
```
./check_user_login.sh your_username
```
注意将your_username替换为您要检查的实际用户名。
centos7 在程序执行的2分钟内,每隔10秒检查指定的用户是否登录系统,用户名从命令行输入。 ■如果在2分钟内,用户登录,则显示用户信息,并退出循环; ■如果检查时间大于2分钟,则退出循环,不再执行。
可以使用以下 Shell 脚本实现:
```
#!/bin/bash
# 检查用户登录的脚本
# 获取要检查的用户名
username=$1
# 计时器开始时间
start_time=$(date +%s)
# 每隔10秒检查一次用户是否登录
while true
do
# 获取当前时间
current_time=$(date +%s)
# 如果检查时间大于2分钟,则退出循环
if [ $((current_time - start_time)) -gt 120 ]; then
echo "检查时间已超过2分钟,退出循环。"
break
fi
# 检查用户是否登录
if who | grep -q ${username}; then
echo "用户 ${username} 已登录系统。"
break
fi
# 等待10秒后再次检查
sleep 10
done
```
在脚本中,我们首先获取要检查的用户名,并使用 `date +%s` 命令获取当前时间的秒数作为计时器的开始时间。然后使用 `while` 循环每隔10秒检查一次用户是否登录,如果检查时间超过2分钟,则使用 `break` 命令退出循环。
在每次循环中,我们使用 `who` 命令查看当前登录的用户,并使用 `grep` 命令查找是否有要检查的用户名。如果找到了该用户,则输出用户信息,并使用 `break` 命令退出循环。如果没有找到该用户,则使用 `sleep` 命令等待10秒后再次检查。
将上述脚本保存为 `check_user_login.sh`,然后执行 `chmod +x check_user_login.sh` 命令赋予脚本执行权限,最后执行 `./check_user_login.sh username` 命令即可检查指定用户在2分钟内是否登录系统。其中 `username` 替换为要检查的用户名。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)