SickOfLife88 Geschrieben 23. Mai 2011 Geschrieben 23. Mai 2011 (bearbeitet) Hey ho, ich brauch Hilfe: #!/bin/ksh ############################## #Tapes einlesen, unter bla.ksh speichern # ############################## ioscan >> /dev/null; ioscan -funNC tape | grep 4-SCSI > bla.ksh; ################################# #Anzahl der Tapes mit Status CLAIMED ermitteln # ################################ claimed=$(cat bla.ksh | grep CLAIMED | wc -l) echo "${claimed} WWNs have Status CLAIMED" ############################### #Eintraege kleiner 14, alle HW-Adressen mit # #Status NO_HW in foo.ksh speichern # ############################# if [ "$claimed" -lt "14" ]; then cat bla.ksh | grep NO_HW | cut -c14-31 > foo.ksh; echo "WWNs are missing" ############################### #Zeile fuer Zeile HW-Adressen auslesen # ############################# cat foo.ksh | while read line; do hwadress=$(echo $line) echo "${hwadress} zugewiesen" ################################################ #wwids ersetzen Abfrage bejahen , in answer.txt steht nur ein y # ############################################## scsimgr replace_wwid -H $hwadress < answer.txt done else echo "exit" fi Im Fettgedruckten Befehl wird auf der Kommandozeile gefragt, wollen Sie wirklich überschreiben ... und via answer.txt soll dann ein y (yes) automatisch übergeben werden, Befehl ausgeführt werden usw. Der Befehl wird jedoch nicht ausgeführt, die Frage (ja, nein) erscheint zwar, doch dann bricht das Programm ab. Woran kann das liegen?:upps Bearbeitet 23. Mai 2011 von SickOfLife88 Zitieren
Jejerod Geschrieben 25. Mai 2011 Geschrieben 25. Mai 2011 Eine Möglichkeit wäre dass der Befehl nicht von STDIN liest sondern vom Terminal. Solche Befehle haben meist einen guten Grund dafür (prominentestes Beispiel dürfte SSH sein). Ein strace -e open,read auf einen ssh-connect unter Linux zeigt das: open("/dev/tty", O_RDWR|O_LARGEFILE) = 5 open("/dev/tty", O_RDWR|O_LARGEFILE) = 5 read(5, ... Ein strace -e open,read auf ein rm -i dagegen: read(0, ... Möglicherweise bietet der Befehl eine --force, --batch oder ähnlich Option an die eine Abfrage dieser Art unterdrückt. Zitieren
SickOfLife88 Geschrieben 26. Mai 2011 Autor Geschrieben 26. Mai 2011 Hey, vielen vielen Dank . Weißt du dann auch, warum die Variablenzuweisung (fettgedruckt) nicht funktioniert, seitdem ich SSH benutze? Sorry, is auch die letzte Frage #!/usr/bin/ksh ########################## #Server wechseln # ######################### echo "###########################################" for i in `/local/hp/hostlist.sh -1 -g HPUX11` do echo $i ssh $i " ############################## #Tapes einlesen, unter bla.ksh speichern # ############################## ioscan >> /dev/null ioscan -funNC tape | grep 4-SCSI > bla.ksh ################################# #Anzahl der Tapes mit Status CLAIMED ermitteln # ################################ claimed=$(cat bla.ksh | grep CLAIMED | wc -l) echo "${claimed} WWNs have Status CLAIMED" ############################### #Eintraege kleiner 14, alle HW-Adressen mit # #Status NO_HW in foo.ksh speichern # ############################# if [ "$claimed" -lt "14" ]; then cat bla.ksh | grep NO_HW | cut -c14-31 > foo.ksh ############################## #Zeile fuer Zeile HW-Adressen auslesen # ############################# cat foo.ksh | while read line do hwadress=${line} echo "${hwadress} zugewiesen" ############################# #wwids ersetzen Abfrage bejahen # ############################ scsimgr replace_wwid -H $hwadress < answer.txt if [ ${claimed} -lt 14 ]; then break fi done else echo "exit" fi " echo "********" done Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.