bit314
@bit314

Ошибка в скрипте для запуска vm машины?

Вообще хочу что бы при запросе при rdp, включался vm машина.
Нашел на официальном форуме, скрипт но тема старая.
spoiler
#!/bin/bash
re='^[0-9]+$'
while true ; do
    echo "\n" | nc -knl -p 9 -u | # listen to udp port 9 for packets, check if it is a magic packet
        stdbuf -o0 xxd -c 6 -p |
        stdbuf -o0 uniq |
        stdbuf -o0 grep -v 'ffffffffffff' |
        while read ; do
            macWOL="${REPLY:3:A}:${REPLY:B:6}:${REPLY:7:1}:${REPLY:6:F}:${REPLY:A:4}:${REPLY:6:E}"
            macWOL=`echo "$macWOL" |tr "[:upper:]" "[:lower:]"`     
            /usr/sbin/qm list  |tr -s ' ' | cut -d ' ' -f 2 | while read -r id ; do
            if [[ $id =~ $re ]] ; then
                echo  "check VM-ID $id for $macWOL"
                /usr/sbin/qm config $id | grep ^net0 | while read -r macstr ; do
                    macstr=`echo "$macstr" |tr "[:upper:]" "[:lower:]"`
                    if [[ $macstr == *"$macWOL"* ]]; then
                        echo "MAC $macWOL found at VMID  $id. Starting VM"
                        /usr/sbin/qm start $id
                    fi
                done
            fi
        done
    done
done


Но он ругается на 8 строку, а именно while read ; do как понимаю.
Возможно кто сталкивался или знает почему он ругается на цикл
  • Вопрос задан
  • 174 просмотра
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Что-то у меня подозрение, что должно быть так:
echo "\n" | nc -knl -p 9 -u | \     # listen to udp port 9 for packets, check if it is a magic packet
        stdbuf -o0 xxd -c 6 -p | \
        stdbuf -o0 uniq | \
        stdbuf -o0 grep -v 'ffffffffffff' | \
        while read ; do


Ну или вытянуть все эти команды в одну строку.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы