Detlef Paschke
2021-02-13 19:32:18 UTC
Hallo,
ich stelle meine Frage noch einmal hier, weil meine sie in
de.comp.os.unix.linux.misc trotz meiner Begründung eher auf
Missbilligung gestoßen ist.
Ich habe meine Frage bewusst dort gestellt, weil ich kein großer Script
Schreiber bin, mir jede Zeile Code, jedes Komma, Semikolon und jede
Klammer von der es auch noch drei verschiedene gibt, mühsam einzeln
zusammen suchen muss. Für mich ist einfacher Code wichtig, ich möchte
Ihn aber auch verstehen wenn ich ihn benutze.
Folgendes habe ich vor. Ich habe ein kleines Script, welches
verschiedene Hardwaredaten abruft, jeweils in eine Textdatei speichert
und diese dann per FTP versendet. Das Script wird per Cronjob aufgerufen.
Nun hatte ich zunächst vor, da manche Hardwaredaten nicht so oft wie
andere abgerufen werden müssen, dies mit einer Option beim Aufruf des
Script zu machen. Es gibt dann eben zwei Cronjobs, einmal mit und einmal
ohne Option.
Das klappt auch schon ganz gut, hier einmal der entsprechende Bereich.
# Speicherinformation mit dmicecode auslesen
if [ "x$1" = "x-ram" ] || [ "x$1" = "x-all" ]; then # Nur ausführen mit
der Option -ram oder -all.
/usr/sbin/dmidecode -t 17 > /tmp/phpsysinfo/dmidecode.txt
fi
# RAID Status auslesen
if [ "x$1" = "x-raid" ] || [ "x$1" = "x-all" ]; then # Nur ausführen
mit der Option -raid oder -all.
/usr/sbin/megaclisas-status > /tmp/phpsysinfo/raidmegaclisas-status.txt
fi
# S.M.A.R.T. Werte von SAS auslesen
if [ "x$1" = "x-smart" ] || [ "x$1" = "x-all" ]; then # Nur ausführen
mit der Option -smart oder -all.
for d in /dev/sd[a-e]; do
echo -e "$(/usr/sbin/smartctl -a $d)" > /tmp/phpsysinfo/smart$((n++)).txt;
done
# S.M.A.R.T. Werte von MegaRAID auslesen
for d in 13 15 14 16 17; do
echo -e "$(/usr/sbin/smartctl -a -d megaraid,$d /dev/bus/1)" >
/tmp/phpsysinfo/smart$((n++)).txt;
done
fi
# APC USV auslesen
if [ "x$1" = "x-ups" ] || [ "x$1" = "x-all" ]; then # Nur ausführen mit
der Option -ups oder -all.
echo -e "---$(date +'%a, %d %b %Y %X %z %Z')--- Executing: apcaccess
status\n$(/sbin/apcaccess status)" > /tmp/phpsysinfo/apcupsd.txt
fi
Es können so alle Bereiche einzeln angesprochen werden oder aber alle
werden mit der Option -all abgearbeitet.
Und wie es nun mal so ist, hat man einen Schritt geschafft, möchte man
den nächsten in Angriff nehmen.
Was ich noch nicht hinbekommen habe, ist eine Kombination also z.B.
-smart,ram oder -smart -ram als Option.
Soweit ich gefunden habe, komme ich dabei nur mit $1 nicht mehr aus aber
wie nun recht weiter?
Irgend wo lese ich, dass so etwas mit "while getopts" gemacht werden
kann. Wie aber konkret, und ob es in meinem Fall geeignet ist...???
Viele Grüße
Detlef Paschke
ich stelle meine Frage noch einmal hier, weil meine sie in
de.comp.os.unix.linux.misc trotz meiner Begründung eher auf
Missbilligung gestoßen ist.
Ich habe meine Frage bewusst dort gestellt, weil ich kein großer Script
Schreiber bin, mir jede Zeile Code, jedes Komma, Semikolon und jede
Klammer von der es auch noch drei verschiedene gibt, mühsam einzeln
zusammen suchen muss. Für mich ist einfacher Code wichtig, ich möchte
Ihn aber auch verstehen wenn ich ihn benutze.
Folgendes habe ich vor. Ich habe ein kleines Script, welches
verschiedene Hardwaredaten abruft, jeweils in eine Textdatei speichert
und diese dann per FTP versendet. Das Script wird per Cronjob aufgerufen.
Nun hatte ich zunächst vor, da manche Hardwaredaten nicht so oft wie
andere abgerufen werden müssen, dies mit einer Option beim Aufruf des
Script zu machen. Es gibt dann eben zwei Cronjobs, einmal mit und einmal
ohne Option.
Das klappt auch schon ganz gut, hier einmal der entsprechende Bereich.
# Speicherinformation mit dmicecode auslesen
if [ "x$1" = "x-ram" ] || [ "x$1" = "x-all" ]; then # Nur ausführen mit
der Option -ram oder -all.
/usr/sbin/dmidecode -t 17 > /tmp/phpsysinfo/dmidecode.txt
fi
# RAID Status auslesen
if [ "x$1" = "x-raid" ] || [ "x$1" = "x-all" ]; then # Nur ausführen
mit der Option -raid oder -all.
/usr/sbin/megaclisas-status > /tmp/phpsysinfo/raidmegaclisas-status.txt
fi
# S.M.A.R.T. Werte von SAS auslesen
if [ "x$1" = "x-smart" ] || [ "x$1" = "x-all" ]; then # Nur ausführen
mit der Option -smart oder -all.
for d in /dev/sd[a-e]; do
echo -e "$(/usr/sbin/smartctl -a $d)" > /tmp/phpsysinfo/smart$((n++)).txt;
done
# S.M.A.R.T. Werte von MegaRAID auslesen
for d in 13 15 14 16 17; do
echo -e "$(/usr/sbin/smartctl -a -d megaraid,$d /dev/bus/1)" >
/tmp/phpsysinfo/smart$((n++)).txt;
done
fi
# APC USV auslesen
if [ "x$1" = "x-ups" ] || [ "x$1" = "x-all" ]; then # Nur ausführen mit
der Option -ups oder -all.
echo -e "---$(date +'%a, %d %b %Y %X %z %Z')--- Executing: apcaccess
status\n$(/sbin/apcaccess status)" > /tmp/phpsysinfo/apcupsd.txt
fi
Es können so alle Bereiche einzeln angesprochen werden oder aber alle
werden mit der Option -all abgearbeitet.
Und wie es nun mal so ist, hat man einen Schritt geschafft, möchte man
den nächsten in Angriff nehmen.
Was ich noch nicht hinbekommen habe, ist eine Kombination also z.B.
-smart,ram oder -smart -ram als Option.
Soweit ich gefunden habe, komme ich dabei nur mit $1 nicht mehr aus aber
wie nun recht weiter?
Irgend wo lese ich, dass so etwas mit "while getopts" gemacht werden
kann. Wie aber konkret, und ob es in meinem Fall geeignet ist...???
Viele Grüße
Detlef Paschke
--
Das "Zitat des Augenblicks" gibt es nur auf
http://www.schabau.dynip.online
Meine "Merkzettel"
http://www.helpdesk.dynip.online
Das "Zitat des Augenblicks" gibt es nur auf
http://www.schabau.dynip.online
Meine "Merkzettel"
http://www.helpdesk.dynip.online