Visualizzazione dei risultati da 1 a 8 su 8

Discussione: script per la batteria

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    178

    script per la batteria

    ciao a tutti!
    sto cercando di fare uno script bash che faccia la percentuale tra due numeri, uno fisso (il massimo) e l'altro variabile...

    i due valori sono quelli della batteria del mio portatile ricavabili da
    codice:
    full_capacity=`cat /proc/acpi/battery/BAT1/info | grep full | awk '{print $4}'`
    remaining_capacity=`cat /proc/acpi/battery/BAT1/state | grep remaining | awk '{
    print $3}'`
    ma non riesco a fare la percentuale di remaining_capacity rispetto a full_capacity...

    come risolvo il tutto in uno script bash ?!?

    Grazie per l'aiuto!!
    ∇•E=ρ/ε ; ∇•B=0 ; ∇xE=-∂B/∂t ; ∇xB=μJ+με∂E/∂t....e ho detto tutto!
    Nessun sistema è sicuro se c'è un idiota a gestirlo!
    Coltiva Linux che Windows si pianta da solo!

  2. #2
    percent_capacity = `echo $remaining_capacity*100/$full_capacity | bc`;
    Ci sono cose che non si possono sapere. Per tutto il resto c'è man

    Prima di fare domande stupide: 1) googla 2) leggi le manpages 3) sparati.

  3. #3

    Re: script per la batteria

    Originariamente inviato da Le0n
    sto cercando di fare uno script bash che faccia la percentuale tra due numeri, uno fisso (il massimo) e l'altro variabile...

    i due valori sono quelli della batteria del mio portatile ricavabili da
    codice:
    full_capacity=`cat /proc/acpi/battery/BAT1/info | grep full | awk '{print $4}'`
    remaining_capacity=`cat /proc/acpi/battery/BAT1/state | grep remaining | awk '{
    print $3}'`
    ma non riesco a fare la percentuale di remaining_capacity rispetto a full_capacity...
    Prova cosi`:
    codice:
    full=`awk /full/ '{ print $4 }' /proc/acpi/battey/BAT1/info`
    remaining=`awk /remaining/ '{ print $3 }' /proc/acpi/battery/BAT1/state`
    percentage=`'$remaining*100/$full'  | bc -l`
    Occhio pero`, se ben ricordo bash non gestisce i numeri in virgola mobile, li considera stringhe.
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    178
    non riesco a far funzionare awk in quel modo...
    mi dice sempre
    awk /full/ '{ print $4 }' /proc/acpi/battery/BAT1/info
    awk: cmd. line:1: fatal: cannot open file `{ print $4 }' for reading (No such file or directory)
    allora ho provato ad invertire '{print $4]' con il file e mi dice
    awk /full/ /proc/acpi/battery/BAT1/info '{ print $4 }'
    last full capacity: 3936 mAh
    awk: (FILENAME=/proc/acpi/battery/BAT1/info FNR=13) fatal: cannot open file `{ print $4 }' for reading (No such file or directory)
    se elimino il `{ print $4 }' mi stampa tutta la stringa....

    ho provato anche con
    awk /full/ /proc/acpi/battery/BAT1/info `{ print $4 }`
    bash: command substitution: line 2: syntax error: unexpected end of file
    last full capacity: 3936 mAh
    ma niente....

    altre idee??

    Grazie!
    ∇•E=ρ/ε ; ∇•B=0 ; ∇xE=-∂B/∂t ; ∇xB=μJ+με∂E/∂t....e ho detto tutto!
    Nessun sistema è sicuro se c'è un idiota a gestirlo!
    Coltiva Linux che Windows si pianta da solo!

  5. #5
    Originariamente inviato da Le0n
    non riesco a far funzionare awk in quel modo...
    mi dice sempre
    codice:
    awk /full/ '{ print $4 }' /proc/acpi/battery/BAT1/info
    awk: cmd. line:1: fatal: cannot open file `{ print $4 }' for reading (No such file or directory)
    allora ho provato ad invertire '{print $4]' con il file e mi dice[...]
    Errore mio.
    Cosi` dovrebbe funzionare:
    codice:
    awk '/full/ { print $4 }' /proc/acpi/battery/BAT1/info
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    178
    ho quasi risolto usando expr al posto di bc...

    perc=`expr $remaining_capacity \* 100 / $full_capacity`
    echo "percentuale $perc"

    con la stessa definizione precedente delle due variabili mi dice 69%...direi che è abbastanza preciso come valore :-D

    Grazie!
    ∇•E=ρ/ε ; ∇•B=0 ; ∇xE=-∂B/∂t ; ∇xB=μJ+με∂E/∂t....e ho detto tutto!
    Nessun sistema è sicuro se c'è un idiota a gestirlo!
    Coltiva Linux che Windows si pianta da solo!

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    178
    adesso però il problema è un altro....
    come faccio a fare una condizione se un valore è =0 ??

    cioè se è = 0 non deve eseguire l'if...
    l'opzione -ne (not equal) va bene ( if [ -ne ...] ) o significa qualche altra cosa??

    Grazie ancora!
    ∇•E=ρ/ε ; ∇•B=0 ; ∇xE=-∂B/∂t ; ∇xB=μJ+με∂E/∂t....e ho detto tutto!
    Nessun sistema è sicuro se c'è un idiota a gestirlo!
    Coltiva Linux che Windows si pianta da solo!

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    178
    risolto con il flag -z ...

    questo è lo script completo
    codice:
    #!/bin/sh
    
    full_capacity=`cat /proc/acpi/battery/BAT1/info | grep full | awk '{print $4}'`
    remaining_capacity=`cat /proc/acpi/battery/BAT1/state | grep remaining | awk '{print
    $3}'`
    rate=`cat /proc/acpi/battery/BAT1/state | grep rate | awk '{print $3}'`
    
    if [ -z rate ]
    then
      perc=`expr $remaining_capacity \* 100 / $full_capacity`
      echo "percentuale $perc"
    else
       echo "unknow"
    fi

    grazie ancora!!
    ∇•E=ρ/ε ; ∇•B=0 ; ∇xE=-∂B/∂t ; ∇xB=μJ+με∂E/∂t....e ho detto tutto!
    Nessun sistema è sicuro se c'è un idiota a gestirlo!
    Coltiva Linux che Windows si pianta da solo!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.