WinFuture-Forum.de: Bashscript und Problem mit automatischer Ausführung - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Bashscript und Problem mit automatischer Ausführung


#1 Mitglied ist offline   tavoc 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.446
  • Beigetreten: 22. Juli 04
  • Reputation: 0

geschrieben 03. Juni 2011 - 18:29

Hallo,

ich habe mir ein bashscript zur Aktualisierung eines Programmes geschrieben, welches bei jedem Start des Rechner ausgeführt werden soll. Dazu wird ein Script über den Runlevel 99 per Init gestart. Das gestartete Script hat dann mehrere Aufgaben, unter anderem wird auch ein weiteres Script gestartet, welches folgenden Code enthält:

#Ausgabe fuer den Updateprozess
PROGRESS=`/bin/ps -fe|grep "[o]penvasmd -p 9031 -s 9030 --update"`;
while [ "$PROGRESS" != "" ]; do
		PROGRESS=`/bin/ps -fe|grep "[o]penvasmd -p 9031 -s 9030 --update"`;
		sleep 1;
		tmp=$tmp"+";
		echo $tmp>>/tmp/log.txt;
		LEN=`expr length $tmp 2>/dev/null`
			   if [ $? -eq 0 ]; then
				if [ $LEN -eq 10 ]; then
						tmp=""
						sleep 1
						echo "Updateprozess beschaeftigt">>/tmp/log.txt
						sleep 1
						echo "Bitte warten">>/tmp/log.txt
				fi
		fi
done;

Er schaut also im wesentlichen, ob ein bestimmtes Programm noch läuft. Wenn ich das Script per Hand ausführe, dann funktioniert auch alles. So lange der Prozess läuft erhalte ich die gewünschten Ausgaben in meine Logdatei.
Wenn das Script aber automatisch startet, dann funktioniert das nicht.

hat einer eine Idee woran es liegen kann?
Ich hatte ursprünglich eine
until ! (/bin/ps -fe|grep "[o]penvasmd -p 9031 -s 9030 --update" >/dev/null);
do

Aber das geht auch nicht.


Grüße

tavoc

EDIT:
Er spring also gar nicht in die Schleife. Ich vermute ein Problem mit ps?

Dieser Beitrag wurde von tavoc bearbeitet: 03. Juni 2011 - 18:41

your IP is 127.0.0.1 or ::1
you are running an OS
you use a Browser
I know so much about you...
0

Anzeige



#2 Mitglied ist offline   Mr. Floppy 

  • Gruppe: VIP Mitglieder
  • Beiträge: 4.115
  • Beigetreten: 01. Juli 08
  • Reputation: 271

geschrieben 03. Juni 2011 - 20:55

Zitat

Er schaut also im wesentlichen, ob ein bestimmtes Programm noch läuft.
Die Frage ist doch eher, ob es schon läuft. Laß Dir doch mal die Prozeßliste zu diesem Zeitpunkt ausgeben:
ps aux > /tmp/pslist.log

Das Programm wird schlicht noch nicht laufen.
0

#3 Mitglied ist offline   tavoc 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.446
  • Beigetreten: 22. Juli 04
  • Reputation: 0

geschrieben 03. Juni 2011 - 21:12

Doch doch das Programm läuft. Sofern ich dieses Script per Hand starte, funktioniert auch alles. Denn das Programm wird von dem Script gestartet. Hier mal ein größerer Ausschnitt

#OpenVas Server starten, Ausgabe umleiten und formatieren
echo "Starte OpenVas Server" >> /tmp/log.txt
openvassd -p 9030 2>&1 | sed 's/^M/\n/g' >> /tmp/log.txt

#OpenVas Plugins aktualisieren, Ausgabe umleiten und formatieren
echo "Aktualisiere NVT - Definitionen" >>/tmp/log.txt
openvas-nvt-sync  2>&1| sed 's/^M/\n/g'>>/tmp/log.txt

#OpenVas Datenbank aktualisieren
echo "Aktualisiere OpenVas Datenbank">>/tmp/log.txt
openvasmd -p 9031 -s 9030 --update -v 2>&1 | sed 's/^M/\n/g' >>/tmp/log.txt &
sleep 60;


#Ausgabe fuer den Updateprozess
PROGRESS=`/bin/ps -fe|grep "[o]penvasmd -p 9031 -s 9030 --update"`;
while [ "$PROGRESS" != "" ]; do
		PROGRESS=`/bin/ps -fe|grep "[o]penvasmd -p 9031 -s 9030 --update"`;
		sleep 1;
		tmp=$tmp"+";
		echo $tmp>>/tmp/log.txt;
		LEN=`expr length $tmp 2>/dev/null`
		if [ $? -eq 0 ]; then
				if [ $LEN -eq 10 ]; then
						tmp=""
						sleep 1
						echo "Updateprozess beschaeftigt">>/tmp/log.txt
						sleep 1
						echo "Bitte warten">>/tmp/log.txt
				fi
		fi

done;

#OpenVas Manager starten
echo "Starte OpenVas Manager" >>/tmp/log.txt
openvasmd -v -p 9031 -s 9030 >>/tmp/log.txt


echo "Server vollstaendig gestartet" >>/tmp/log.txt

exit 0


Aber ich werde mal vorher die Liste ausgeben lassen. Mal schauen was da drin steht. Danke.
your IP is 127.0.0.1 or ::1
you are running an OS
you use a Browser
I know so much about you...
0

#4 Mitglied ist offline   tavoc 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.446
  • Beigetreten: 22. Juli 04
  • Reputation: 0

geschrieben 04. Juni 2011 - 09:35

Also in der "liste" ist der Prozess drin, es hat trotzdem nicht funktioniert.

Nach genauerem Studium der Manpage von PS und angeregt von deinem "ps" Aufruf habe ich statt "ps -ef" mal das hier probiert:

ps auxww

Und nun scheint es zu funktionieren. Anscheinend nutzt das Init System ps irgendwie anders, sodass die BSD Syntax mit -ef nicht verstanden wird.
Ich teste das jetzt noch ein wenig, aber es scheint zu gehen ;)

Danke für den Denkanstoss
your IP is 127.0.0.1 or ::1
you are running an OS
you use a Browser
I know so much about you...
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0