Hallo, ich will ein kl. script antesten das mir zwei Werte voneinander abzieht. Per ip-up wird `date +%s` nach $mygrep geschrieben. Anschl. dieses script gestartet um es auszuwerten. #!/bin/sh # myfile=~/.onlinecounter mygrep="/var/log/counter" offline=`grep AUS $mygrep | cut -c 4-` echo "Onlinezeit: von $online-$(date +%s) = min/std Online!" >> $myfile Beide Werte sind sec (date +%s) Frage? Was mach ich hier falsch? Ich hab es schon $(($online)-$(date +%s)) oder $($(online)-$(date +%s)), so eine Std. alles mal getestet aber nicht zum exacten Ergebnis gekommen :( Ich weiß,...ich könnte statt grep auch cat nehmen....aber die Ausgabe ist gestesten auf console, in Ordnung. Eben die Ausgabe von 'date +%s'. -- sig_04 Du willst wissen wo eine bestimmte Programmdatei und zugehörig. Doku steckt? Beispiel: $ whereis pppd [Info: man whereis] pppd: /usr/sbin/pppd /usr/man/man8/pppd.8.gz ------------------------------------------------ --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hallo Clemens, Clemens Wohld wrote:
echo "Onlinezeit: von $online-$(date +%s) = min/std Online!" >> $myfile Beide Werte sind sec (date +%s)
Frage? Was mach ich hier falsch?
Ich hab es schon $(($online)-$(date +%s)) oder $($(online)-$(date +%s)), so eine Std. alles mal getestet aber nicht zum exacten Ergebnis gekommen :(
# Differenz zwischen "jetzt" und dem Wert in $online: echo $[$(date +%s) - online] Innerhalb von $[] sind die Variablen ohne $ anzugeben. Die Ausgabe kannst du dann noch (mit einer zusaetzlichen Variablen, z.B. zeit=$[$(date +%s) - online] auch formatieren, z.B, in "Stunden:Minuten:Sekunden": echo $[zeit / 3600]:$[zeit % 3600 / 60]:$[zeit % 60] CU David -- "Wenn du so weitermachst lernst du das "Wokeln" auch noch. Was du weist nicht was Wokeln ist. das ist der Stil in dem Ich Poste." [WoKo in dag°] --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hallo David, * On Thu, Aug 17, 2000 at 12:47:45AM +0200, David Haller wrote:
Clemens Wohld wrote:
myfile=/root/.onlinecounter # ergebnisfile mygrep=/var/log/counter # ist ein "AUS `date +%s`" offline=`grep AUS $mygrep` # tmp -grepfile
echo "Onlinezeit: von $online-$(date +%s) = sec Online!" >> $myfile
Beide Werte sind sec (date +%s) Frage? Was mach ich hier falsch?
# Differenz zwischen "jetzt" und dem Wert in $online: echo $[$(date +%s) - online]
Dank dir, dass ist ein 'treffer'. An [ ] hab ich ja überhaupt nicht gedacht....
Die Ausgabe kannst du dann noch (mit einer zusaetzlichen Variablen, z.B. zeit=$[$(date +%s) - online] auch formatieren, z.B, in "Stunden:Minuten:Sekunden":
echo $[zeit / 3600]:$[zeit % 3600 / 60]:$[zeit % 60]
Ahh, dass ist interesant! Schade,...noch kommt eine komische Zahl bei raus,....aber ich bin gaaanz dicht drann mit deinem Vorschlag ;) Ich bekomme als Ausgabe einer kl. Zeitspanne: 268481:48:22 als Ergebnis raus. Ist jetzt 19.48 Uhr. Eigentlich sollten da nur 20 sec diff. sein :( Noch ein kl. Schups und auch ich habs ;)) Gruß Clemens -- sig_27 System nach Progr. mit gesetztem suid-bit durchsuchen $ find / -type f -perm -4000 -exec ls -l {} \; [Info: man find; man chmod; man chown] ----------------------------------------------------- --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hallo Clemens, Clemens Wohld wrote:
* On Thu, Aug 17, 2000 at 12:47:45AM +0200, David Haller wrote:
Clemens Wohld wrote:
myfile=/root/.onlinecounter # ergebnisfile mygrep=/var/log/counter # ist ein "AUS `date +%s`" offline=`grep AUS $mygrep` # tmp -grepfile
Bist du sicher, dass du damit _nur_ die Sekunden bekommst?
echo $[zeit / 3600]:$[zeit % 3600 / 60]:$[zeit % 60]
Ahh, dass ist interesant!
Schade,...noch kommt eine komische Zahl bei raus,....aber ich bin gaaanz dicht drann mit deinem Vorschlag ;)
Ich bekomme als Ausgabe einer kl. Zeitspanne: 268481:48:22 als Ergebnis raus. Ist jetzt 19.48 Uhr.
Eigentlich sollten da nur 20 sec diff. sein :( Noch ein kl. Schups und auch ich habs ;))
Hmmm. Mal konstruiert (und mit der neuen Syntax $(( )) statt $[ ] und in Ausgabe diverse Zeilenumbrueche entfernt: $ online=$(date +%s); for i in `seq 1 30`; do tmp=$(( $(date +%s)-online )); \ echo $(( tmp / 3600 )):$(( tmp % 3600 / 60 )):$(( tmp % 60 )) ; sleep 3; done 0:0:0 0:0:3 0:0:7 0:0:10 0:0:13 0:0:16 0:0:19 0:0:22 0:0:25 0:0:28 0:0:31 0:0:34 0:0:37 0:0:40 0:0:43 0:0:46 0:0:49 0:0:52 0:0:55 0:0:58 0:1:1 0:1:4 0:1:7 0:1:10 0:1:13 0:1:16 0:1:19 0:1:22 0:1:25 0:1:28 Scheint zu klappen. Ich vermute mal, dass die Inhalte der Variablen nicht so sind wie sie sein sollten! Also kontrolliere einfach mal mit echo $online $offline oder was auch immer... CU David --
Es gibt eben Dinge, die muss man mal getan haben. Ja. Z.B vor die Microsoftniederlassung pinkeln. ;)) Guuute Idee, das :-) Das sollte eigentlich irgendjemand Siggen. Urheberrechte liegen bei Jan. [V. Mueller und B. Brodesser in suse-talk]
--------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hi David, * On Fri, Aug 18, 2000 at 12:51:28AM +0200, David Haller wrote:
Clemens Wohld wrote:
* On Thu, Aug 17, 2000 at 12:47:45AM +0200, David Haller wrote:
Clemens Wohld wrote:
myfile=/root/.onlinecounter # ergebnisfile mygrep=/var/log/counter # ist ein "AUS `date +%s`" offline=`grep AUS $mygrep` # tmp -grepfile
Bist du sicher, dass du damit _nur_ die Sekunden bekommst?
Nee, sicher nicht. Da ist noch eine pipe inc. cut hinter. Aber ich bin schon sicher das es alle Zahlen hat. Und nur die. ...auch bei einigen Stellen mehr ... ;)
echo $[zeit / 3600]:$[zeit % 3600 / 60]:$[zeit % 60]
Ich bekomme als Ausgabe einer kl. Zeitspanne: 268481:48:22 als Ergebnis raus. Ist jetzt 19.48 Uhr.
Eigentlich sollten da nur 20 sec diff. sein :( Noch ein kl. Schups und auch ich habs ;))
Hmmm. Mal konstruiert (und mit der neuen Syntax $(( )) statt $[ ] und in Ausgabe diverse Zeilenumbrueche entfernt:
$ online=$(date +%s); for i in `seq 1 30`; do tmp=$(( $(date +%s)-online )); \ echo $(( tmp / 3600 )):$(( tmp % 3600 / 60 )):$(( tmp % 60 )) ; sleep 3; done
Scheint zu klappen. Ich vermute mal, dass die Inhalte der Variablen nicht so sind wie sie sein sollten! Also kontrolliere einfach mal mit echo $online $offline oder was auch immer...
Hm... hab schon alles getestet vorher... Aber Ziel erreicht, noch nicht mit Monats-ausgabe, aber brauchbar. Hatte einen fleißigen kl. Helfer (Erol) ,) Also es soll noch ein extra-teil aus den Tageszeiten Monats-Zeit und per variable 'money=""' das onlinegeld ausrechnet. Wäre doch nicht schlecht ;) Wenn es fertig ist pack ich es zu den anderen auf die Xpage.
Es gibt eben Dinge, die muss man mal getan haben. Ja. Z.B vor die Microsoftniederlassung pinkeln. ;)) Guuute Idee, das :-) Das sollte eigentlich irgendjemand Siggen. Urheberrechte liegen bei Jan. [V. Mueller und B. Brodesser in suse-talk]
....oha ;)) Wo in HH finde ich eine M$-Niederlassung? *gr* Gruß Clemens -- sig_33 Ausgabe der aktuellen routing-tabelle: $ route -n [Info: man route ] $ netstat -rn [Info: man netstat] X-page:http://www.ndh.net/home/wohld/index.html ----------------------------------------------- --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hallo Clemens, Clemens Wohld wrote:
Hm... hab schon alles getestet vorher... Aber Ziel erreicht, noch nicht mit Monats-ausgabe, aber brauchbar. Hatte einen fleißigen kl. Helfer (Erol) ,)
Also es soll noch ein extra-teil aus den Tageszeiten Monats-Zeit und per variable 'money=""' das onlinegeld ausrechnet.
Wäre doch nicht schlecht ;) Wenn es fertig ist pack ich es zu den anderen auf die Xpage.
Ich habe mir jetzt (um die Arbeitszeit an einem Projekt zu loggen, also ein parallels Problem) das folgende start-stop-script geschrieben: ==== snip ==== #!/bin/bash LOCKFILE="/tmp/work.lock" # ist willkuerlich LOGFILE="work.log" case "`basename $0`" in start) echo `date +%s` > $LOCKFILE echo -en "Von: `date +%x' '%H:%M`\t" >> $LOGFILE if [ -n "$(ps x | grep xemacs)" ]; then echo "Xemacs already running. Not loading." else echo "Starting Xemacs" xemacs \ # Einige Dateien, die geladen werden sollen fi ;; stop) BEGINN=`cat $LOCKFILE` DIFF=$(( $(date +%s)-BEGINN )); echo -e "Bis: $(date +%x' '%H:%M) \ \tZeit: $(( DIFF / 3600 )):$(( DIFF % 3600 / 60 )):$(( DIFF % 60 ))" \
$LOGFILE unset BEGINN DIFF # rm $LOCKFILE ;; esac
==== snap ==== Fuer deinen Zweck kannst du dann noch (im stop Zweig) das $DIFF (die "Onlinezeit" in Sekunden auswerten. Ich hab's grad getestet, das funzt sogar mit Zeiten von 0 sek bis mind. 40 Stunden ;) Ich verzichte hier darauf, das "LOCKFILE" zu loeschen... Kann man aber am Ende vom stop) einbauen. Ach so, der Vollstaendigkeit halber: $ ls -l -rwxr--r-- 1 dh users 849 Aug 20 05:09 start* lrwxrwxrwx 1 dh users 5 Jul 19 01:31 stop -> start* Noch eine Anmerkung: Ich habe grad bemerkt, dass wenn das Terminal, von dem aus xemacs gestartet wurde, nicht mehr laeuft, dann erscheint bei einem einfachen ps der Prozess nicht mehr. Daher grad noch auf "ps x" geaendert ;)
Es gibt eben Dinge, die muss man mal getan haben. Ja. Z.B vor die Microsoftniederlassung pinkeln. ;)) Guuute Idee, das :-) Das sollte eigentlich irgendjemand Siggen. Urheberrechte liegen bei Jan. [V. Mueller und B. Brodesser in suse-talk]
....oha ;)) Wo in HH finde ich eine M$-Niederlassung? *gr*
Woher soll ich das wissen![tm] CU David --
Irgendwann werden sie glauben. Der Mensch ist zum Glauben geboren, sonst wäre dieKirche nicht so reich. Ui, der is schön. Darf ich den siggen? Bidde bidde. [Jakob Krieger und Marian°®¥ in dag°]
--------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* David Haller wrote:
# Differenz zwischen "jetzt" und dem Wert in $online: echo $[$(date +%s) - online]
Innerhalb von $[] sind die Variablen ohne $ anzugeben.
Seit bash 2.0 wird $((...)) statt $[...] verwendet. Also nicht wundern, wenn $[...] in einer neuen bash-Version einmal nicht mehr funktioniert. :) christian -- Bitte kein CC: bei Antwort an Mailingliste Etikette per Mail: To: mailings-suse@gmx.de Subject: send etikette http://www.ndh.net/home/schult/etikette.html --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* On Thu, Aug 17, 2000 at 10:33:57PM +0200, Christian Schult wrote:
* David Haller wrote:
# Differenz zwischen "jetzt" und dem Wert in $online: echo $[$(date +%s) - online]
Innerhalb von $[] sind die Variablen ohne $ anzugeben.
Seit bash 2.0 wird $((...)) statt $[...] verwendet. Also nicht wundern, wenn $[...] in einer neuen bash-Version einmal nicht mehr funktioniert. :)
GNU bash, version 2.03.0(1) .....könnte es deswegen einen Fehler gegeben haben? Mein jetziges script läuft wieder mit <----------- snip ----------------> tmpsec=$[offline-online+15] onlhours=$[tmpsec / 3600] onlmin=$[tmpsec % 3600 / 60] onlsec=$[tmpsec % 3600 % 60] <------------ snap ---------------> Sowas geht anscheinend recht nett, da hab ich keine Probleme mit. Obwohl cal oder andere tols sich event. auch schon bei so einfachen Dingen auszahlen. Gruß Clemens -- sig_07 Kernel patchen mit *.gz paches: [Info: man patch] $ gzip -cd patch.gz | patch -p0 Achte darauf das du KEINEN "SuSE-Kernel" mit einem "freien" patch patcht. Da braucht's ein SuSE-patch. --------------------------------------------------- --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hallo Clemens, * Clemens Wohld schrieb am 16.Aug.2000:
Frage? Was mach ich hier falsch?
Ich hab es schon $(($online)-$(date +%s))
Die Syntax für Rechnungen lautet: $((...)) also doppelte Klammer, Du kannst aber dann natürlich keine schließende Klammer darin haben, bevor Du noch eine öffnende hast. Nimm doch mal das $(( und das )) weg, dann bleibt bei Dir $online)-$(date +%s tehen. Das kann es doch nicht sein. Richtig wäre: $((($online)-$(date +%s))) wobei aber die Klammer um $online überflüssig ist, es tuts auch $(($online-$(date +%s))) Natürlich mußt Du damit was machen. Die shell ersetzt den Ausdruck mit dem Ergebnis. Da muß denn schon eine Zuweisung erfolgen, oder ein echo oder sonstwas.
oder $($(online)-$(date +%s)), so eine Std. alles mal getestet aber
Das kann es so wie so nicht sein, da die Syntax $((...)) lautet, also mit doppelten Klammer.
nicht zum exacten Ergebnis gekommen :(
In der Reihenfolge, in der Du es oben beschreibst, erhälst Du so wie so immer ein negatives Ergebnis, da Du von dem älteren, also kleineren Datum, daß neuere also größere abziehst, besser wäre somit: $(($(date +%s)-$online)) Bernd -- Bei Fragen an die Liste erst mal nachschauen, ob es diese Frage nicht schon einmal gegeben hat. Ein Archiv der Liste findest Du auf: http://lists.suse.com/archives/suse-linux |Zufallssignatur 7 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hallo Bernd, * On Thu, Aug 17, 2000 at 01:46:02AM +0200, Bernd Brodesser wrote:
* Clemens Wohld schrieb am 16.Aug.2000:
Frage? Was mach ich hier falsch?
Ich hab es schon $(($online)-$(date +%s))
so immer ein negatives Ergebnis, da Du von dem älteren, also kleineren Datum, daß neuere also größere abziehst, besser wäre somit:
$(($(date +%s)-$online))
Stimmt, aber ich bekomme hiermit genau die syntaxerror die ich in meinen Versuchen vorher auch schon bekam. Die Variante $(($(date +%s)-$online)) hatte ich auch schon. Das hatten wir nämlich letzten hier und da hatte ich es ursprünglich "abgeschaut". So wie ich dich kenne hast du es doch bestimmt ausprobiert. Oder? Im script? ..ich bekomme systax-eror :( Gruß Clemens -- sig_50 Was hat das rpm alles installiert? $ rpm -qa | grep ^vim | awk '{print "rpm -ql " $1 }' \ | /bin/sh | less [Info: man bash|awk|rpm|grep] ------------------------------------------------------- --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* Clemens Wohld schrieb am 17.Aug.2000:
* On Thu, Aug 17, 2000 at 01:46:02AM +0200, Bernd Brodesser wrote:
$(($(date +%s)-$online))
Stimmt, aber ich bekomme hiermit genau die syntaxerror die ich in meinen Versuchen vorher auch schon bekam. Die Variante $(($(date +%s)-$online)) hatte ich auch schon.
Das hatten wir nämlich letzten hier und da hatte ich es ursprünglich "abgeschaut".
So wie ich dich kenne hast du es doch bestimmt ausprobiert. Oder? Im script? ..ich bekomme systax-eror :(
Wie gesagt, da muß eine Zuweisung vor, oder ein echo oder was. Wenn Du einfach 15 schreibst bekommst Du auch eine Syntaxerror. Du müßtest schon so was wie echo $(($(date +%s)-$online)) >> $LOGFILE chreiben und LOGFILE natürlich vorher definieren. Dann bekomst Du auch kein Syntax Error. Habe ich mit obiger Zeile ausprobiert: ---schnipp--------------------------- #! /bin/bash LOGFILE=logfile online=$(date +%s) sleep 10 echo $(($(date +%s)-$online)) >> $LOGFILE ---schnapp-------------------------------- Funktioniert bestens. Bernd -- Homepages von deutschsprachigen Linux-Gurus: Kristian Köhntopp: http://www.koehntopp.de/kris/artikel/ Sven Guckes: http://www.math.fu-berlin.de/~guckes/sven Robin S Socha: http://socha.net/index2.html |Zufallssignatur 10 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* Clemens Wohld wrote:
so immer ein negatives Ergebnis, da Du von dem älteren, also kleineren Datum, daß neuere also größere abziehst, besser wäre somit:
$(($(date +%s)-$online))
Stimmt, aber ich bekomme hiermit genau die syntaxerror die ich in meinen Versuchen vorher auch schon bekam. Die Variante $(($(date +%s)-$online)) hatte ich auch schon.
Hier funktioniert obige Syntax. Du musst den Output obigen arithmetischen Ausdrucks aber noch irgendwie verarbeiten, sonst versucht die bash, die erhaltene Zahl auszuführen. :) Also ein echo davor oder eine Variablenzuweisung. christian -- Bitte kein CC: bei Antwort an Mailingliste Etikette per Mail: To: mailings-suse@gmx.de Subject: send etikette http://www.ndh.net/home/schult/etikette.html --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* On Thu, Aug 17, 2000 at 10:38:45PM +0200, Christian Schult wrote:
* Clemens Wohld wrote:
so immer ein negatives Ergebnis, da Du von dem älteren, also kleineren Datum, daß neuere also größere abziehst, besser wäre somit:
$(($(date +%s)-$online))
Stimmt, aber ich bekomme hiermit genau die syntaxerror die ich in meinen Versuchen vorher auch schon bekam. Die Variante $(($(date +%s)-$online)) hatte ich auch schon.
Hier funktioniert obige Syntax. Du musst den Output obigen arithmetischen Ausdrucks aber noch irgendwie verarbeiten, sonst versucht die bash, die erhaltene Zahl auszuführen. :) Also ein echo davor oder eine Variablenzuweisung.
Ich denke mal das versteht sich insofern schon von selbst als das der Wert ja in ein file (.onlinecouter) mitgelogt wird. aber ich hatte mit echo $(($(date +%s)-$online)) so meine Probleme,...ich weiß nicht warum. Mach es jetzt etwas anders und es ist auch ein gutes, zufriedenstellendes Ergebnis. Naja Schulle,.....wenn die 'flat' da ist kann ich es eh in mein "Museum" schieben ;)) ...bestellt ist sie. Gruß Clemens -- sig_13 Kurze Sätze an eine file anhängen: [Info: man bash] Entweder: echo bla_bla >> /file oder mit EOF: $ cat <<EOF>> Datei
alles was hier geschrieben wird taucht in `Datei' auf EOF (EOF und [Enter] beendet den Analog)
--------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
participants (4)
-
B.Brodesser@online-club.de
-
c.wohld@ndh.net
-
cschult@gmx.de
-
David@dhaller.de