【问题标题】:crontab sends net rpc shutdown but nothing happenscrontab 发送 net rpc shutdown 但没有任何反应
【发布时间】:2013-03-24 22:45:03
【问题描述】:

我创建了两个脚本来自动打开和关闭教室中的计算机。

两个脚本都获取 MAC ID 列表并使用它们来 1)唤醒计算机(唤醒命令)和 2)关闭计算机(网络 rpc 关闭)。

服务器是FREEBSD,工作站是win7。

除了“wake”和“net rpc shutdown”部分外,这两个脚本看起来很相似。手动运行(通过 shell)时,这两个脚本都能完美运行。

只有 WOL 脚本与 crontab 一起运行,关机脚本也运行,但计算机没有任何反应。

Cron 日志仅显示脚本已处理,但计算机不会做出反应。

关机脚本:

#!/usr/local/bin/bash
#[ $# -eq 0 ] && { echo "Usage: $0 filename"; exit 1; } #muutujad sätitud?
list="/usr/local/etc/isc-dhcp_192.168.4"
erand="/root/skriptid/WOL/erand.txt"
# kontrollime, kas erandid ja list olemas
[ ! -f $list ] && { echo "EXIT! List puudu asukohas: $list"; exit 1; }
[ ! -f $erand ] && { echo "EXIT! Erandid puudu asukohas: $erand"; exit 1; }
#jätkame
while read line
do
        IFS=' ' read -a array <<< "$line"
        mac=`echo ${array[5]}|sed 's/;//'`
        ip=`echo ${array[7]}|sed 's/;//'`
        host=`echo ${array[1]}`
        if grep -Fq "$ip" $erand
        then
                echo -e "Jatan vahele: HOST: $host IP: $ip MAC: $mac \n----" #exceptions
                sleep 1
        else
                echo -e "Lülitan välja: HOST: $host IP: $ip MAC: $mac \n----"
                net rpc SHUTDOWN -t 15 -f -C "Arvuti lulitub valja. Serveripoolne kask."     -W luunja -U $host\\xx%xx -S $ip
                sleep 1
        fi
done < $list

定时任务:

40      19      *       *       *     root    /root/skriptid/WOL/shutdown.sh

两个脚本都由 root 运行,拥有 666 权限。

除了日志,有没有办法查看 cronjob 的输出? cronjob 和 net rpc 之间是否存在已知冲突?

任何帮助都将不胜感激! 谢谢

【问题讨论】:

    标签: cron crontab freebsd shutdown


    【解决方案1】:

    您需要指明执行脚本的二进制文件。

    来自

    40 19 * * * root /root/skriptid/WOL/shutdown.sh
    

    40 19 * * * root /bin/sh /root/skriptid/WOL/shutdown.sh
    

    或者来自which sh的任何东西。

    (我想我每天回答一次这个问题)

    【讨论】:

    • 您好!非常感谢您的努力。不幸的是,计算机没有响应。尝试了 /bin/sh 和 /usr/local/bin/bash (运行脚本)。手动工作,cronjob 不行。正如我之前提到的,一个非常相似的 WOL 脚本可以完美地与 cronjob 一起运行。这是我的 cron 日志: Apr 3 15:34:00 xxx/usr/sbin/cron[82636]: (root) CMD ( /usr/local/bin/bash /root/skriptid/WOL/test.sh ) Apr 3 15 :34:00 xxx /usr/sbin/cron[82636]: (root) CMD (/usr/sh /root/skriptid/WOL/test.sh)
    • 嗯首先我们应该看看cron是否被执行,看看它是cron还是脚本错误。我无法从脚本中得到它。尝试一个简单的* * * * * /bin/sh touch /tmp/file 看看它是否有效。
    • 您好!触摸似乎没有发挥作用。我将尝试整理我的 /etc/cron 并告知结果:)
    • 好的!检查/etc/cron.d/etc/cron.d/allow, deny 中可能的配置信息。
    • 嘿!我在 /etc/cron 中整理了我的两条错误行,并通过简单的触摸测试了 cron 并且它可以正常工作。虽然...我的脚本不起作用。我什至直接输入net rpc到cron,如下:8 17 * * * root net rpc SHUTDOWN -t 30 -f -C "Arvuti lulitub valja. Serveripoolne kask." -W xxx -U xxx\\xxx%xxx -S 192.168.2.102根据日志,crontab转发了命令,但是电脑没有反应。直接给 shell 相同的命令......它就像魅力一样。顺便说一句,freebsd 没有 cron.d 也没有类似的东西——简单的 /etc/crontab。我真的开始认为它不适合工作。
    【解决方案2】:

    为您的 crontab 添加路径

    PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin:/usr/local/bin
    

    【讨论】:

      【解决方案3】:

      您必须在 Windows 计算机上启用文件共享才能使您的脚本正常工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-18
        • 2021-10-16
        • 1970-01-01
        • 2010-12-13
        • 1970-01-01
        • 2021-08-04
        • 2021-10-21
        相关资源
        最近更新 更多