【问题标题】:Bash Script TimerBash 脚本计时器
【发布时间】:2011-06-08 15:57:06
【问题描述】:

我最近开始使用 bash 进行编码,并且正在制作用于机架式计算机的诊断检查 CD,以便打印到 LCD 屏幕上。

到目前为止它可以工作,但我想要它做的是当它到达检查哪些以太网端口被拔出的部分时,它会在那里停留 30 分钟左右,重复检查,然后继续执行脚本。

IE:拔掉第一个以太网端口时,LCD 显示 LAN 1 DIS,插上它就消失了。拔下 1&2 后,它会在 LAN 1 DIS 和 LAN 2 DIS 之间交替显示,所以我希望它在指定的时间段内继续执行此操作,然后继续。

我查看了 cron,这似乎对在永久系统上制作计时器很有用,但我只想让 cd 启动,进行检查,然后弹出它,让真正的操作系统接管,我试过使用:

while [ `sleep 30m` ];
  do    

   /mnt-system/KNOPPIX/lcdwriter.pl "";
   BAD="";

  for i in 0 1 2 3
  do

  #LAN number to ETH number mapping
  case $i in
     0)
        j=1;
     ;;
     1)
        j=2;
     ;;
     2)
        j=4;
     ;;
     3)
        j=3;
     ;;
  esac


     STATUS=`/usr/sbin/ethtool eth$i | grep "Link detected: no"`;

     if [ "x$STATUS" != "x" ]
     then
        BAD=$BAD$j;
        echo "LAN $BAD Disconnected";
        /mnt-system/KNOPPIX/lcdwriter.pl "LAN $BAD   DIS";

    sleep 5;
     fi
     done;
       done;

【问题讨论】:

    标签: bash networking timer automated-tests ethernet


    【解决方案1】:

    未经测试,但下面的脚本应该可以满足您的需求。它使用计数器来跟踪循环中剩余的时间。在循环的每次迭代后,它会被递减和测试。

    #! /usr/bin/bash
    #LAN number to ETH number mapping
    function eth2lan() {
        case "$1" in
        0)
            echo 1;
            ;;
        1)
            echo 2;
            ;;
        2)
            echo 4;
            ;;
        3)
            echo 3;
            ;;
        esac
    }
    timeleft=$(( 30 * 60 ))
    
    while true; do
        for i in 0 1 2 3; do
            /mnt-system/KNOPPIX/lcdwriter.pl ""
            if /usr/sbin/ethtool eth$i | grep -qs "Link detected: no"; then
                echo "LAN $(eth2lan $i) Disconnected"
                /mnt-system/KNOPPIX/lcdwriter.pl "LAN $(eth2lan $i)   DIS";
            fi
        done
        timeleft=$(( $timeleft - 5 ))
        if [[ "$timeleft" -lte 0 ]]; then
            break
        fi
        sleep 5
    done
    

    【讨论】:

    • 谢谢。我现在正在尝试这个,我们会看到它的结果。
    • 完美运行。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    相关资源
    最近更新 更多