Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users Deutsches Forum (German) Diskussionsforum
  • Search

[SOLVED] [BASH] Script schlägt immer wieder fehl

Unterhaltung über Gentoo und andere Themen: Alles was nicht in ein Support-Forum gehört.
Post Reply
  • Print view
Advanced search
5 posts • Page 1 of 1
Author
Message
bbgermany
Veteran
Veteran
User avatar
Posts: 1844
Joined: Mon Feb 21, 2005 8:19 am
Location: Oranienburg/Germany

[SOLVED] [BASH] Script schlägt immer wieder fehl

  • Quote

Post by bbgermany » Thu Nov 14, 2019 1:58 pm

Hallo Leute,

ich verstehe es nicht, aber vielleicht kann mir jemand dabei helfen. Es geht um folgendes: Ich frage via SSH eine HPE 3Par ab um mir ein paar Werte geben zu lassen. Unter anderem auch die Batterieladestände. Wenn ich die Abfrage starte sind in der Abfragedatei auch die richtigen Werte:

Code: Select all

Power Supply ID,0
Assembly Serial Number,XXXXXXXXXXXXXX
Charge Level(%),100
Power Supply ID,1
Assembly Serial Number,YYYYYYYYYYYYYYY
Charge Level(%),100
Leider sagt mir das Script seit neustem, den folgenden Fehler:

Code: Select all

./check_3par: line 170: 100 + : syntax error: operand expected (error token is "+ ")
Ich habe jetzt Google schon wegen dem Fehler bemüht, aber lt. Ergebnisliste habe ich alles richtig. Hier mal noch den Bereich aus dem Script. Vielleicht fällt ja jemandem auf, was ich übersehe:

Code: Select all

                # check batteries load level
                if [ $COMMAND == "check_bat" ]; then

                        $CONNECTCMD showbattery -d -csvtable  | grep "Supply ID\|Serial\|Charge Level" > $TMPDIR/3par_$COMMAND.$INSERV.out


                        if [ `cat $TMPDIR/3par_$COMMAND.$INSERV.out | wc -l` -lt 3 ]; then
                                echo "No Battery"
                                rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
                        else
                                CHARGELVL=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | grep Charge | cut -d, -f2`
                                IFS=' ' read -r -a CHARGE_LVL <<< $CHARGELVL
                                BATCOUNT=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | grep ID | cut -d, -f2`
                                BATS=`wc -w <<< \"${BATCOUNT}\"`
                                for a in $BATCOUNT; do
                                        CHARGE_SUM=$((${CHARGE_SUM} + ${CHARGE_LVL[${a}]}));
                                done



                                CHARGE_SUM=$((${CHARGE_SUM}/`wc -w <<< \"${BATCOUNT}\"`))

                                if [ $CHARGE_SUM -eq 100 ]; then
                                        status=0
                                        statustxt=OK
                                elif [ $CHARGE_SUM -lt 95 ]; then
                                        status=2
                                        statustxt=CRITICAL
                                elif [ $CHARGE_SUM -le 99 ]; then
                                        status=1
                                        statustxt=WARNING
                                fi
                        fi

                        echo "$status ${INSERV}_Info_Bat Battery=$CHARGE_SUM;99;95;100;0 $statustxt - $BATS Batteries loaded to: $CHARGE_SUM %"
                        #rm $TMPDIR/3par_$COMMAND.$INSERV.out
                fi
Es hängt immer in der Schleife, wo das Script die Werte CHARGE_SUM und CHARGE_LVL kombinieren soll. Vielleicht hat ja einer ne Idee.

Danke schon mal im Voraus.

MfG. Stefan
Last edited by bbgermany on Mon Nov 18, 2019 6:53 am, edited 1 time in total.
Desktop: Ryzen 7 5800X, 32GB, 2TB, RX7700XT
Noebook: Dell XPS 13 9370, 16GB, 1TB
Server #1: Ryzen 5 Pro 4650G, 64GB, 16.5TB
Server #2: Ryzen 4800H, 32GB, 22TB
Top
firefly
Watchman
Watchman
Posts: 5385
Joined: Thu Oct 31, 2002 8:24 pm

  • Quote

Post by firefly » Thu Nov 14, 2019 2:56 pm

Das ergbnis des ausdrucks "${CHARGE_LVL[${a}]}" ist vermutlich einfach leer.
Gib doch mal die einzelnen Werte vor der Addition aus
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
Top
mike155
Advocate
Advocate
Posts: 4438
Joined: Fri Sep 17, 2010 11:33 pm
Location: Frankfurt, Germany

  • Quote

Post by mike155 » Thu Nov 14, 2019 3:56 pm

Nach jedem Aufruf von externen Programmen aus bash (und auch aus anderen Programmiersprachen) sollte immer das Ergebnis geprüft werden. Ich sehe keine einzige Überprüfung.
Top
toralf
Developer
Developer
User avatar
Posts: 3944
Joined: Sun Feb 01, 2004 2:58 pm
Location: Hamburg
Contact:
Contact toralf
Website

Re: [BASH] Script schlägt immer wieder fehl

  • Quote

Post by toralf » Fri Nov 15, 2019 3:51 pm

bbgermany wrote:Es hängt immer in der Schleife, wo das Script die Werte CHARGE_SUM und CHARGE_LVL kombinieren soll.
Mit

Code: Select all

nl -ba <script>
kannst Du m.E. sehr viel besser die Forenteilnehmer entscheiden lassen, wo der Fehler auftritt.
Top
bbgermany
Veteran
Veteran
User avatar
Posts: 1844
Joined: Mon Feb 21, 2005 8:19 am
Location: Oranienburg/Germany

  • Quote

Post by bbgermany » Mon Nov 18, 2019 6:53 am

Hi,

vielen Dank für eure Hilfe. Ich konnte dadurch das Problem ein wenig mehr isolieren. Es lag daran, dass die folgende Zeile das Array irgendwie nicht richtig erstellt hat, in dem die Werte für Ladung der Batterien gespeichert werden soll:

Code: Select all

IFS=' ' read -r -a CHARGE_LVL <<< $CHARGELVL
Da die Inhalt des Strings immer aus folgendermaßen aussieht:

Code: Select all

Zahl Zahl Zahl ...
konnte ich das direkt in ein Array umwandeln.

Danke euch nochmal.

MfG. Stefan
Desktop: Ryzen 7 5800X, 32GB, 2TB, RX7700XT
Noebook: Dell XPS 13 9370, 16GB, 1TB
Server #1: Ryzen 5 Pro 4650G, 64GB, 16.5TB
Server #2: Ryzen 4800H, 32GB, 22TB
Top
Post Reply
  • Print view

5 posts • Page 1 of 1

Return to “Diskussionsforum”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic