Veröffentlicht 23. Mai 201114 j 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 201114 j von SickOfLife88
25. Mai 201114 j 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.
26. Mai 201114 j 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
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.