Pular para o conteúdo

Controle e Automação

Dica publicada em Shell Script / Variáveis
Bruno Santos brsan7
Hits: 3.614 Categoria: Shell Script Subcategoria: Variáveis
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Controle e Automação

Eu não sou da área de TI, muito menos especialista em shell, mas sempre fui um apaixonado pelo Linux/Unix e sua ideologia.

Controladores lógicos industriais são caríssimos e eu sempre enxerguei e acreditei no potencial GNU em democratizar o acesso às tecnologias.

Temporizadores são imprescindíveis no controle eletromecânico, como não encontrei nada parecido, me senti no dever de divulgar, ainda é rudimentar, mas espero ajudar quem trilha esse caminho. Não espero nenhum retorno, é simplesmente pelo carinho de tantos anos suportado por essa linda família Linux!

Ainda não sei bem como fazer a comunicação com uma placa de IO, mas assim que eu precisar e descobrir, informarei com muito prazer!

#Desauto_V3.0_brsantos_02/06/15
menu="=======>>Desligamento Automático<<========
|==>Modos de desligamento                |
|Temporizado  >>T<< [HH:MM; H:M ou MMMM] |
|Agendado     >>A<< [H{0..24}  M{0..60}] |
|Imediato     >>I<<                      |
=========================================="
menuset1="|==>Modo Selecionado (Temporizado)       |"
menuset2="|==>Modo Selecionado (Agendado)          |"
echo "$menu"
read modo

if [ $modo = 'I' -o $modo = 'i' ]
    then sudo shutdown  -v -h -P +0
fi

if [ $modo = 'T' -o $modo = 't' ]
    then
        clear;echo "$menu"
        echo "|==>Setup Temporizado                    |\n|Quantas horas?                          |"
        read H
        clear;echo "$menu"
        echo "|==>Setup Temporizado                    |\n|Quantos minutos?                        |"
        read M
        clear;echo "$menu\n$menuset1\n|Iniciado   "$(date +%H:%M:%S)"||=======Timer=======|"
    elif [ $modo = 'A' -o $modo = 'a' ]
        then
        clear;echo "$menu"
        echo "|==>Setup Agendado                       |\n|Para que hora?                          |"
        read horaAG
        clear;echo "$menu"
        echo "|==>Setup Agendado                       |\n|Para que minuto?                        |"
        read minAG
        clear;echo "$menu\n$menuset2\n|Iniciado   "$(date +%H:%M:%S)"||=======Timer=======|"
        horaA=$(date +%H)
        minA=$(date +%M)

        if [ $(($horaAG-$horaA)) -lt 0 ]
            then
                H=$(($horaAG+24-$horaA))
            else
                H=$(($horaAG-$horaA))
        fi

        if [ $(($minAG-$minA)) -lt 0 ]
            then
                M=$(($minAG+60-$minA))
                H=$(($H-1))
            else
                M=$(($minAG-$minA))
        fi

    else clear;echo "Digite o modo corretamente: T ou t; A ou a; I ou i"
    exit
fi

horaA=$(date +%H)
minA=$(date +%M)
seg=$(date +%S)
minF=$M
horaF=$H

if [ $M -gt 60 ]
    then
        while [ $minF -gt 60 ]
            do
                minF=$(($minF-60))
                horaF=$(($horaF+1))
        done
fi

if [ $horaA -lt 10 -a $horaA -gt 0 ]
    then
        horaP=$(($H+${horaA#*0}))
    else
        horaP=$(($H+$horaA))
fi

if [ $minA -lt 10 -a $minA -gt 0 ]
    then
        minP=$(($M+${minA#*0}))
    else
        minP=$(($M+$minA))
fi

while [ $minP -ge 60 ]
    do
        minP=$(($minP-60))
        horaP=$(($horaP+1))
done

min=$minP
hora=$horaP

if [ $hora -ge 24 ]
    then
        hora=$(($hora-24))
fi

if [ $min -lt 10 -o $hora -lt 10 ]
    then
        if [ $min -lt 10 -a $hora -lt 10 ]
            then echo "|Hora_Final 0"$hora":0"$min":"$seg"||     "$horaF"H "$minF"M <=="
            elif [ $hora -lt 10 ]
                then echo "|Hora_Final 0"$hora":"$min":"$seg"||     "$horaF"H "$minF"M <=="
            else echo "|Hora_Final "$hora":0"$min":"$seg"||     "$horaF"H "$minF"M <=="
        fi
    else echo "|Hora_Final "$hora":"$min":"$seg"||     "$horaF"H "$minF"M <=="
fi

Thora=$horaF
Tmin=$minF
Tseg=0
segC=$seg

while [ $Thora$Tmin$Tseg -ne 000 ]
    do
        segA=$(date +%S)
        NsegA=$(date +%N)

        if [ $segC -ne $segA ]
            then
                Tseg=$(($Tseg-1))
                segC=$segA
        fi

        if [ $Tseg -lt 0 ]
            then
                Tseg=59
                Tmin=$(($Tmin-1))
        fi

        if [ $Tmin -lt 0 ]
            then
                Tmin=59
                Thora=$(($Thora-1))
        fi
echo -n "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b|Hora_Atual "$(date +%H:%M:%S)"|| ==> $Thora""H"" $Tmin""M"" $Tseg""S    "
done
Tseg=0
sudo shutdown -v -h -P +1
clear
exit

Download do script: desauto_v3.0.sh

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
Nenhuma dica encontrada.

Variável de numero inteiro ou float

Atendimento ou suporte remoto em estações de trabalho via VNC

Site com várias dicas de ajuda para shell script

Trabalhando com parâmetros em Shell Script

Números aleatórios em shell script

Contribuir com comentário

Entre na sua conta para comentar.