Metody tworzenia własnych skryptów
Są dwie możliwości tworzenia skryptów:
1. Pierwszą z nich jest stworzenie skryptu na komputerze w edytorze tekstowym i skopiowanie, go do komputera przez FTP (SFTP). Instrukcja aktywowania FTP oraz połączenia dostępna jest w instrukcji obsługi routerów.
W przypadku wyboru tej opcji należy zachować ostrożność, ponieważ routery nie są oparte na systemie Windows, a Linux. Chodzi tutaj o sygnalizację końca linii (EOL – End Of Line). Windows wykorzystuje LF+CR, natomiast Linux tylko LF jako sygnalizację końca linii (EOL).
Skrypt może zostać skopiowany do folderu „root” w pamięci flash lub „/var/data” w pamięci MRAM. W wypadku ważnych danych lepsza będzie druga opcja, gdyż pamięć MRAM nie jest kasowana przy zaniku zasilania. Do tymczasowych testów wystarczy folder „root”.
2. Drugą z opcji jest stworzenie skryptu w sekcji „Startup Script” i jest to opcja, którą rekomendujemy ze względu na brak bezpośredniej ingerencji w system plików.
Tutaj również możemy zastosować dwie techniki.
· Pierwsza wykorzystuje komendę „cat” jak w przykładzie poniżej. Szerszy opis komendy pod linkiem: http://www.tldp.org/LDP/abs/html/here-docs.html
Przykład tworzenia skryptu w sekcji „Startup Script”:
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here.
cat > /var/scripts/smsan.sh << EOF
#!/bin/sh
PHONE=+48500123456
an1thrshold=500
an2thrshold=500
an1txt="Activation an1"
an2txt="Activation an2"
OLD1=0
OLD2=0
while true
do
VAL1=\`/usr/bin/io get an1\`
if [ \$VAL1 -gt \$an1thrshold ]; then
POMVAL1=1
else
POMVAL1=0
fi
if [ "\$POMVAL1" != "\$OLD1" ]; then
[ "\$POMVAL1" = "1" ] && gsmsms \$PHONE "\$an1txt"
OLD1=\$POMVAL1
fi
VAL2=\`/usr/bin/io get an2\`
if [ \$VAL2 -gt \$an2thrshold ]; then
POMVAL2=1
else
POMVAL2=0
fi
if [ "\$POMVAL2" != "\$OLD2" ]; then
[ "\$POMVAL2" = "1" ] && gsmsms \$PHONE "\$an2txt"
OLD2=\$POMVAL2
fi
sleep 1
done
EOF
W takim wypadku skrypt zostanie utworzony w folderze /var/scripts i nazwany smsan.sh. Jego zawartość poniżej.
Skrypt /var/scripts/smsan.sh powodujący wysłanie SMSa w momencie, gdy wejście an1 lub an2 przekroczą ustalony w zmiennych próg:
#!/bin/sh
PHONE=+48500123456
an1thrshold=500
an2thrshold=500
an1txt="Aktivace an1"
an2txt="Aktivace an2"
OLD1=0
OLD2=0
while true
do
VAL1=`/usr/bin/io get an1`
if [ $VAL1 -gt $an1thrshold ]; then
POMVAL1=1
else
POMVAL1=0
fi
if [ "$POMVAL1" != "$OLD1" ]; then
[ "$POMVAL1" = "1" ] && gsmsms $PHONE "$an1txt"
OLD1=$POMVAL1
fi
VAL2=`/usr/bin/io get an2`
if [ $VAL2 -gt $an2thrshold ]; then
POMVAL2=1
else
POMVAL2=0
fi
if [ "$POMVAL2" != "$OLD2" ]; then
[ "$POMVAL2" = "1" ] && gsmsms $PHONE "$an2txt"
OLD2=$POMVAL2
fi
sleep 1
done
EOF
· Druga technika wykorzystuje komendę echo, tak jak w przykładzie poniżej.
Skrypt stworzony przy wykorzystaniu komendy „echo”:
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here.
echo -en "#!/bin/sh" \
"\nPHONE=+48500123456" \
"\nMESSAGE=\"BIN0 is active\"" \
"\nwhile true" \
"\ndo" \
"\n /usr/bin/io get bin0" \
"\n VAL=\$?" \
"\n if [ \"\$VAL\" != \"\$OLD\" ]; then" \
"\n [ \"\$VAL\" = \"0\" ] && gsmsms \$PHONE \$MESSAGE" \
"\n OLD=\$VAL" \
"\n fi" \
"\nsleep 1" \
"\ndone" >> /var/scripts/my_test.sh
Skrypt zostanie stworzony w folderze /var/scripts i nazwany my_test.sh. Jego zawartość poniżej.
Skrypt /var/scripts/my_test.sh wysyłający SMS w momencie, gdy wejście cyfrowe bin0 jest w stanie wysokim.
#!/bin/sh
PHONE=+48500123456
MESSAGE="BIN0 is active"
while true
do
/usr/bin/io get bin0
VAL=$?
if [ "$VAL" != "$OLD" ]; then
[ "$VAL" = "0" ] && gsmsms $PHONE $MESSAGE
OLD=$VAL
fi
sleep 1
done
3. Po stworzeniu skryptu należy go uruchomić. Realizujemy to wykorzystując odpowiednie komendy wpisywane w sekcję „Startup Script*” lub „Up/Down Script**”. Przykład poniżej.
Skrypt z sekcji „Startup Script” lub „Up/Down Script”:
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here.
echo -en "#!/bin/sh" \
.
.
# Here is body of your script.
.
.
"\ndone" >> /var/scripts/my_test.sh
chmod 777 /var/scripts/my_test.sh
sh /var/scripts/my_test.sh &
Ważne:
*Skrypt stworzony w sekcji Startup Script będzie wywoływany po każdym restarcie urządzenia. Ta metoda zapisuje go w konfiguracji nawet po ponownym wgraniu firmwareu.
** Skrypt uruchamiany w sekcji Up Script musi być wyłączany w sekcji Down Script inaczej będzie on wywoływany w nieskończonej pętli przy każdym startowaniu połączenia WAN.
Skontaktuj się ze specjalistą Elmark
Masz pytania? Potrzebujesz porady? Zadzwoń lub napisz do nas!