Linux客户端自动关机任务配置:排除Active Directory组pan-sgg-dalas
修复Linux客户端自动关机任务排除AD组的脚本问题
原脚本的核心问题
- 逻辑搞反:原代码是计算机在目标组就设置关机,但需求是排除该组,判断逻辑完全颠倒。
- AD计算机名匹配失效:AD组中的计算机成员会带
$后缀(比如PC01$),原脚本用hostname -s获取的短主机名无$后缀,无法匹配到组内计算机。 - cron文件名非法:文件名包含冒号
:可能导致系统解析异常,换成无特殊字符的名称更稳妥。 - 语法小错误:else分支的提示语句中
belong应改为第三人称单数belongs。
修复后的脚本
echo "设置自动关机时间,排除pan-sgg-dalas组的计算机" # 获取带$后缀的短主机名,匹配AD组中的计算机成员格式 computer_name=$(hostname -s)$ # 判断计算机是否不在pan-sgg-dalas组中 if ! getent group pan-sgg-dalas | grep -q "$computer_name"; then # 写入合法文件名的cron任务 echo "0 22 * * * root /sbin/shutdown -h now" > /etc/cron.d/shutdown_2200 echo "已设置22:00自动关机" else echo "该计算机属于pan-sgg-dalas组,不设置自动关机" fi
注意事项
- 必须以root身份运行脚本(比如
sudo bash 你的脚本名.sh),否则无权限写入/etc/cron.d目录。 - 先确认客户端已加入AD域,执行
getent group pan-sgg-dalas能正常返回组成员列表,否则脚本判断会失效。 - 验证任务生效:执行
cat /etc/cron.d/shutdown_2200查看内容是否正确,或重启cron服务(systemctl restart cron)确保任务加载。
内容的提问来源于stack exchange,提问作者Ronin
相关产品推荐
相关产品推荐

