Script fehler - was mach ich falsch

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Spike1986
Beiträge: 153
Registriert: 25.01.2012 20:16:47

Script fehler - was mach ich falsch

Beitrag von Spike1986 » 23.08.2013 14:46:52

Code: Alles auswählen

#!/bin/sh 

file1="/test/time.txt"
file2="/test/old"


if [$(stat -c %Y $file1) -lt $(stat -c %Y $file2)] ; then
echo "test"
fi

exit
Bekomm ich immer folgende Fehlermeldung

Code: Alles auswählen

/usr/sbin/test.sh: 7: /usr/sbin/test.sh: [1376998406: not found

Benutzeravatar
4A4B
Beiträge: 962
Registriert: 09.11.2011 11:19:55
Kontaktdaten:

Re: Script fehler - was mach ich falsch

Beitrag von 4A4B » 23.08.2013 14:49:27

Nach dem [ und vor dem ] fehlt ein Leerzeichen:

Code: Alles auswählen

if [ $(stat -c %Y $file1) -lt $(stat -c %Y $file2) ] ; then

Spike1986
Beiträge: 153
Registriert: 25.01.2012 20:16:47

Re: Script fehler - was mach ich falsch

Beitrag von Spike1986 » 23.08.2013 15:38:24

super perfekt, hat geklappt.

Danke

Spike1986
Beiträge: 153
Registriert: 25.01.2012 20:16:47

Re: Script fehler - was mach ich falsch

Beitrag von Spike1986 » 23.08.2013 16:37:20

da müsste ich noch etwas fragen.

Und zwar habe ich unter /var/etc die datei email.cfg

dort sind folgende Punkte hinterlegt

SMTPFROM=""
SMTPTO=""

usw

nun möchte ich gern das die Punkte dort ausgelesen werden. Das ich die eMail daten in einer email.cfg habe und und meinen scripten nicht jedesmal angeben muss

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: Script fehler - was mach ich falsch

Beitrag von r900 » 23.08.2013 16:48:57

Spike1986 hat geschrieben:nun möchte ich gern das die Punkte dort ausgelesen werden. Das ich die eMail daten in einer email.cfg habe und und meinen scripten nicht jedesmal angeben muss
Dazu gibt es den Befehl source (kann man auch durch einen Punkt abkuerzen). Also einfach zu Beginn deines Skripts eine Zeile

Code: Alles auswählen

source /var/etc/email.cfg
bzw.

Code: Alles auswählen

. /var/etc/email.cfg
Dann kannst du in deinem Skript die Variablen die in dieser Datei zugewiesen werden benutzen.

Spike1986
Beiträge: 153
Registriert: 25.01.2012 20:16:47

Re: Script fehler - was mach ich falsch

Beitrag von Spike1986 » 23.08.2013 16:53:48

perfekt.

Danke danke

Spike1986
Beiträge: 153
Registriert: 25.01.2012 20:16:47

Re: Script fehler - was mach ich falsch

Beitrag von Spike1986 » 23.08.2013 19:34:46

Code: Alles auswählen

    #Abfrage ob Update gestartet werden soll
   wget -O /dev/null "http://localhost:80/web/message?text=Eine%20neu%20Senderlisten%20steht%20zum%20Update%20bereit!%20Soll%20Update%20gestartet%20werden?&type=0&timeout=10"
	wget -O /dev/null "http://localhost:80/web/remotecontrol?command=108"
	sleep 10
	wget -O /tmp/answer "http://localhost:80/web/messageanswer?getanswer=now"
	answer=$(cat "/tmp/answer" | grep -o YES)
		if [ "$answer" = YES ];then
		wget -O /dev/null "http://localhost:80/web/message?text=Update%20gestartet!%20Kann%20mehrer%20Minuten%20dauern!.&type=1&timeout=15"
		$get_bqdir/$get_bqfile
		else
		wget -O /dev/null "http://localhost:80/web/remotecontrol?command=352"
		fi
ist ein auszug aus einem script. Das rote makierte ist eine Abfrage momentan bleibt die abfrage 10 sekunden und damit das script nicht weiter läuft habe ich sleep 10 eingefügt. Gibt es eine Funktion das das Script erst weiter läuft wenn abfrage (rot markiert) ja oder nein ist?
Zuletzt geändert von Spike1986 am 23.08.2013 19:46:04, insgesamt 1-mal geändert.

Benutzeravatar
TRex
Moderator
Beiträge: 8322
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: Script fehler - was mach ich falsch

Beitrag von TRex » 23.08.2013 19:40:15

BefehlA && BefehlB ist, was du suchst. Und in CODE-Tags kannst du keine Farben verwenden ;) (und rot solltest du nicht verwenden, da damit Moderatoreneingriffe sichtbar gemacht werden)

EDIT: normalerweise sollte es überhaupt nicht weiter laufen...
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: Script fehler - was mach ich falsch

Beitrag von r900 » 23.08.2013 19:45:56

Der Umweg ueber die Datei ist ueberflussig.

Code: Alles auswählen

while [ -z "$answer" ]; do
   answer=$(wget -O - 'http://localhost:80/web/messageanswer?getanswer=now' | egrep -o 'YES|NO')
   sleep 1
done
Wobei mir das grep auf "NO" etwas unsicher ist. Je nachdem wie die Ausgabe von wget aussieht eventuell noch mit einem Wortbegrenzer (\b) abschliessen.

Spike1986
Beiträge: 153
Registriert: 25.01.2012 20:16:47

Re: Script fehler - was mach ich falsch

Beitrag von Spike1986 » 24.08.2013 10:55:33

Super danke habe es eingebaut. Somit wird auf die Abfrage gewartet genau so wollte ich das.
Somit kann ich mit den Fein tuning anfangen.

ein script habe ich auf dem Server dieser packt mir die ganze Settings in ein archiv und macht daraus eine time.txt.

Gibt es eine Möglichkeit das automatisch alle Ordner Ordner geprüft wird? jetzt habe ich jede Datei einzeln angegeben für Astra_e1 Astra_e2 .... am besten wäre wenn das Script unter /media/daten/www/settings/original alle Unterordner geprüft werden

Code: Alles auswählen

#!/bin/sh
#
# Pruefung ob geaenderte Settings neuer sind als die gepackten auf dem Server. Version 1.0
# Fuer Crontab Server


# services von Orginal Settings (Astra e1) angeben, sind die nicht gepackten
astra_e1_org="/media/daten/www/settings/original/Astra_e1/services"
# time.txt von gepackten Settings (Astra e1) angeben
astra_e1_time="/media/daten/www/settings/Astra_e1/time.txt"

# lamedb von Orginal Settings (Astra e2) angeben, sind die nicht gepackten
astra_e2_org="/media/daten/www/settings/original/Astra_e2/lamedb"
# time.txt von gepackten Settings (Astra e2) angeben
astra_e2_time="/media/daten/www/settings/Astra_e2/time.txt"

# services von Orginal Settings (Hotbird e1) angeben, sind die nicht gepackten
hotbird_e1_org="/media/daten/www/settings/original/Hotbird_e1/services"
# time.txt von gepackten Settings (Hotbird e1) angeben
hotbird_e1_time="/media/daten/www/settings/Hotbird_e1/time.txt"

# lamedb von Orginal Settings (Hotbird e2) angeben, sind die nicht gepackten
hotbird_e2_org="/media/daten/www/settings/original/Hotbird_e2/lamedb"
# time.txt von gepackten Settings (Hotbird e2) angeben
hotbird_e2_time="/media/daten/www/settings/Hotbird_e2/time.txt"

# Prueft ob die bearbeiten Settings (Astra e1) neuer sind als die gepackten
if [ $(stat -c %Y $astra_e1_org) -gt $(stat -c %Y $astra_e1_time) ] ; then
/usr/sbin/pack_astra_e1.sh
else
echo "Kein packen noetig. Astra e1"
fi

# Prueft ob die bearbeiten Settings (Astra e2) neuer sind als die gepackten
if [ $(stat -c %Y $astra_e2_org) -gt $(stat -c %Y $astra_e2_time) ] ; then
/usr/sbin/pack_astra_e2.sh
else
echo "Kein packen noetig. Astra e2"
fi

# Prueft ob die bearbeiten Settings (Hotbird e1) neuer sind als die gepackten
if [ $(stat -c %Y $hotbird_e1_org) -gt $(stat -c %Y $hotbird_e1_time) ] ; then
/usr/sbin/pack_hotbird_e1.sh
else
echo "Kein packen noetig. Hotbird e1"
fi

# Prueft ob die bearbeiten Settings (Hotbird e2) neuer sind als die gepackten
if [ $(stat -c %Y $hotbird_e2_org) -gt $(stat -c %Y $hotbird_e2_time) ] ; then
/usr/sbin/pack_hotbird_e2.sh
else
echo "Kein packen neotig. Hotbird e2"
fi

exit

Spike1986
Beiträge: 153
Registriert: 25.01.2012 20:16:47

Re: Script fehler - was mach ich falsch

Beitrag von Spike1986 » 24.08.2013 13:00:42

ich habe eine idee aber irgendwas läuft falsch

Code: Alles auswählen

SAT="Astra_e1 Astra_e2 Hotbird_e1 Hotbird_e2"

# lamedb von Orginal Settings 
file1="/media/daten/www/settings/original/$SAT/lamedb"
# time.txt von gepackten Settings
file1_time="/media/daten/www/settings/$SAT/time.txt"

# Prueft ob die bearbeiten Settings neuer sind als die gepackten
if [ $(stat -c %Y $file1) -gt $(stat -c %Y $file1_time) ] ; then
/usr/sbin/pack_$SAT.sh
else
echo "Kein packen noetig."
fi
leider klappt das nicht. ich kann doch unter SAT="Astra_1 ... das angeben oder nicht?

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: Script fehler - was mach ich falsch

Beitrag von r900 » 24.08.2013 13:11:06

Spike1986 hat geschrieben:leider klappt das nicht. ich kann doch unter SAT="Astra_1 ... das angeben oder nicht?
Ja, dann musst du allerdings eine Schleife verwenden.

Code: Alles auswählen

for name in $SAT; do
  file1_time="/media/daten/www/settings/$name/time.txt"
   ...
done

Spike1986
Beiträge: 153
Registriert: 25.01.2012 20:16:47

Re: Script fehler - was mach ich falsch

Beitrag von Spike1986 » 24.08.2013 19:26:04

Schleife klappt super.

Code: Alles auswählen

SETTING=Hotbird_e2

while [ -z "$version" ]; do
version=$($SETTING | egrep -o 'e1|e2')
sleep 1
done

if [ "$version" = e1 ]; then
ENIGMA="enigma1"
else
ENIGMA=""
fi

if [ "$version" = e2 ]; then
ENIGMA="enigma2"
else
ENIGMA=""
fi
Muss ich da auch eine schleife anwenden?

Antworten