Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

TCL - Datum und Uhrzeit auslesen und einer .txt-Datei nach jeder Ausführung zeilenweise übergeben

Frage Entwicklung Batch & Shell

Mitglied: BlattlausOG

BlattlausOG (Level 1) - Jetzt verbinden

20.05.2014, aktualisiert 21.05.2014, 4238 Aufrufe, 9 Kommentare

Hallo Community,

ich möchte per TCL-Script die Uhrzeit und das Datum des Systems auslesen und einer Textdatei übergeben.
Dabei soll nach jeder Ausführung des Scripts das aktuelle Datum und die aktuelle Uhrzeit in die nächste untere Zeile geschrieben werden,
wobei die bereits vorhandenen Zeilen bestehen bleiben sollen.

1. Datum und Uhrzeit des Systems auslesen:
01.
set date [clock seconds] 
02.
set date [clock format $date -format {%Y.%m.%d  %T}]
2. Datum und Uhrzeit der Log-Datei .txt übergeben: (Ansatzweise...so....irgendwie...?)
01.
set log [open "../log") w] 
02.
puts $log "[lindex $date]"
Folgendermaßen sollte die Textdatei z.B. aussehen:
01.
2014.05.21 00:25:11   //erste Zeile 
02.
2014.05.19 15:43:32   //zweite Zeile 
03.
2014.05.14 12:23:27   //dritte Zeile 
04.
2014.05.03 06:18:07   //vierte Zeile 
05.
2014.04.25 21:48:22   //fünfte Zeile 
06.
2014.03.18 08:29:31   //sechste Zeile 
07.
u.s.w.
Wie Ihr sicherlich bemerkt habt, hab ich davon so gut wie keine Ahnung und hoffe auf tatkräftige Unterstützung

Besten Dank für Eure Antworten.

Grüße,
Blattlaus
Mitglied: colinardo
21.05.2014, aktualisiert um 01:26 Uhr
Hallo Blatlaus,
ich muss gestehen das ich mit TCL noch nie Kontakt hatte, aber da man ja sein Leben lang neues ausprobieren sollte und mir "Programmieren" kein Fremdwort ist , hab ich mal schnell in die Doku geschaut und folgendes ist dabei rausgekommen, du warst schon ganz dicht dran mit deinem Code, nur der Parameter für den Filezugriff war hier nicht ganz optimal für dein Vorhaben:
01.
set date [clock seconds] 
02.
set date [clock format $date -format {%Y.%m.%d  %T}] 
03.
set log [open "../log" a+] 
04.
puts $log "$date" 
05.
close $log
Das a+ bedeutet: Wenn die Datei nicht existiert, erstelle sie, ansonsten öffne das File und setze die Schreibposition ans Ende der Datei.
Also jedes mal wenn du ein File so öffnest, wird alles was du danach ins File schreibst, immer ans Ende dran gehängt.
http://www.tcl.tk/man/tcl8.5/tutorial/Tcl24.htm

Grüße Uwe
Bitte warten ..
Mitglied: BlattlausOG
21.05.2014, aktualisiert um 13:16 Uhr
Hallo Uwe,

vielen Dank für deine superschnelle Antwort.

Ich hätte eine weitere Frage.
Wenn ich nun ein Name in dieses bestehende Script übergeben möchte, wie wüsste das dann aussehen?

So...in etwa...?
01.
proc input {} { 
02.
set name "" 
03.
set date [clock seconds] 
04.
set date [clock format $date -format {%Y.%m.%d  %T}] 
05.
set log [open "../log" a+] 
06.
puts $log "$date  | $name" 
07.
close $log 
08.
}

Die log.txt sollte so gegliedert sein:
01.
2014.05.21 00:25:11   |   Bert         //erste Zeile 
02.
2014.05.19 15:43:32   |   Stefan     //zweite Zeile 
03.
2014.05.14 12:23:27   |   Nadine    //dritte Zeile 
04.
2014.05.03 06:18:07   |   Nadine    //vierte Zeile 
05.
2014.04.25 21:48:22   |   Heike      //fünfte Zeile 
06.
2014.03.18 08:29:31   |   Dirk         //sechste Zeile 
07.
u.s.w.
Wäre dies ohne großen Aufwand realisierbar?

Vielen Dank schonmal

Gruß,
Blattlaus
Bitte warten ..
Mitglied: colinardo
21.05.2014, aktualisiert um 13:56 Uhr
also wenn du mit Parameterübergabe meinst, innerhalb eines Scriptes ginge das so:
01.
proc writelog {name} { 
02.
  set date [clock seconds] 
03.
  set date [clock format $date -format {%Y.%m.%d  %T}] 
04.
  set log [open "../log" a+] 
05.
  puts $log "$date | $name" 
06.
  close $log 
07.
}
aufrufen der Prozedur dann so:
writelog "Heike"
http://www.tcl.tk/man/tcl8.5/tutorial/Tcl11.html

Wenn du stattdessen die Argumente schon in der Bash Kommandozeile übergeben willst kannst du das Script so schreiben:
01.
proc writelog {name} { 
02.
  set date [clock seconds] 
03.
  set date [clock format $date -format {%Y.%m.%d  %T}] 
04.
  set log [open "./log.txt" a+] 
05.
  puts $log "$date | $name" 
06.
  close $log 
07.
08.
writelog [lindex $argv 0]
und es dann so z.B. in der Bash aufrufen:
tclsh deinscript.tcl "Heike"
http://www.fundza.com/tcl/script_shell/arguments.html

Grüße Uwe
Bitte warten ..
Mitglied: BlattlausOG
21.05.2014, aktualisiert um 15:49 Uhr
Hallo Uwe,

danke für deine Antwort.

Ich habe mich wohl falsch ausgedrückt.

Ein Name wird dem Script übergeben, das Script soll den Namen mit der davorgestellten Systemzeit speichern.
Wird irgendwann ein neuer oder gar der gleiche Name übergeben (variabler Name), soll dasselbe geschehen allerdings in eine neue Zeile.

Die im voherigen Post gelistete Text-Datei ist nur, wie ich mir die Ausgabe vorstelle.

Das ist alles

Grüße
Bitte warten ..
Mitglied: colinardo
21.05.2014, aktualisiert um 15:49 Uhr
Zitat von BlattlausOG:
Ein Name wird dem Script übergeben, das Script soll den Namen mit der davorgestellten Systemzeit speichern.
Wird irgendwann ein neuer oder gar der gleiche Name übergeben (variabler Name), soll dasselbe geschehen allerdings in eine
neue Zeile.

Das ist alles
aber das tut genau das zweite Script von oben ....
Bitte warten ..
Mitglied: BlattlausOG
21.05.2014, aktualisiert um 15:50 Uhr
Alles klar, ich schaue mir das später genauer an...

Danke
Bitte warten ..
Mitglied: BlattlausOG
21.05.2014 um 19:24 Uhr
Hallo Uwe,

ich nochmal *nerv*

Ok, soweit so gut...

Wie würde das Script ausschauen mit folgendem Ablauf:

1. Diesem Script wird eine Uhrzeit über eine Variable übergeben, die Formatierung wie folgt: 19:16:42
2. Das Datum soll vom der PC-Systemzeit ausgelesen werden, die Formatierung wie folgt: 2014.05.21
3. Die bereits erwähnte Namensvariablen werden ebenso dem Script übergeben
4. Nun alles zusammensetzen in folgender Formatierung: 2014.05.21 19:16:42 | Elke
5. Zuguterletzt die zusammengefasste Variable der log.txt übergeben
6. Ebenso bereits erwähnt, bei neuer Übergabe eines Namens aktuellen Zeitstempel setzen und in nächste Zeile anreihen.
Vorherige Zeitstempel unberührt lassen.

Das sollte dann das Endresultat sein.

So Interessant das Thema auch ist, sieht man den Quellcode wird einem so manches verständlicher....vielleicht :p

Grüße
Bitte warten ..
Mitglied: colinardo
21.05.2014, aktualisiert um 19:50 Uhr
Es wäre mal gut zu wissen, wie du das mit der Übergabe der Parameter an das Script meinst, bzw, auf welchem OS du arbeitest. Meinst du die Übergabe der Parameter an die Funktion im Script selber, oder eine Übergabe von Parametern von der Kommandozeile an ein Script was als Datei gespeichert ist ??? Willst du mehrere Namen gleichzeitig an das Script übergeben ??

so wie ich das verstanden habe:
01.
proc writelog {name uhrzeit} { 
02.
  # aktuelles Datum in Variable schreiben 
03.
  set date [clock seconds] 
04.
  set date [clock format $date -format {%Y.%m.%d}] 
05.
  # Zeile zusammensetzen 
06.
  set line "$date $uhrzeit | $name" 
07.
  # Logfile im Append-Modus öffnen 
08.
  set log [open "./log.txt" a+] 
09.
  # Zeile in Logfile schreiben 
10.
  puts $log $line 
11.
  # Handle zum Logfile schließen (flush) 
12.
  close $log 
13.
14.
# der writelog-prozedur die zwei Parameter der Kommandozeile übergeben (Name / Uhrzeit) 
15.
writelog [lindex $argv 0] [lindex $argv 1]
Aufruf dann so
tclsh deinscript.tcl "Elke" "10:00:00"
Mit diesem Tutorial sollte das kein Problem mehr darstellen: http://www.tcl.tk/man/tcl8.5/tutorial/tcltutorial.html
Die nötigen Fetzen habe ich dir ja geliefert, damit solltest du das umsetzen können. Das hier ist ja kein Hausaufgaben-Lösen Forum.
Wenn ich das gestern in 10 Minuten Lesen im Tutorial auf dem Smartphone hier schaffe (hatte vorher sonst noch nie was mit TCL gemacht!!) sollte das für dich eigentlich mit etwas Lesen eine Lösbare Aufgabe darstellen.

Viel Erfolg
Grüße Uwe
Bitte warten ..
Mitglied: BlattlausOG
21.05.2014 um 20:29 Uhr
Ok, danke dir für deine tatkräftige Unterstützung.

Werde mich durch den Link kämpfen.

Auf ein ander mal

Grüße
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Datei zeilenweise auslesen - es passiert aber nichts
gelöst Frage von NagusBatch & Shell3 Kommentare

Hi zusammen, ich stehe gerade auf dem Schlauch. Ich will mit einem einfachen Script aus einer text-Datei Dateinamen auslesen ...

VB for Applications
Textdatei zeilenweise nach Datum sortieren
gelöst Frage von GurkenhobelVB for Applications2 Kommentare

Hallo Gemeinde, mehrere umfangreiche Textdateien, in denen zeilenweise wichtige Daten und Termine eingetragen sind, sollen zeilenweise nach dem Datum ...

Batch & Shell
(BATCH:) Zeilenweise Txt auslesen und in eine Variable speichern
gelöst Frage von NincedBatch & Shell20 Kommentare

Hallo Leute, Ich weiß, es ist ein alter Hut, aber ich habe da ein paar Fragen bezüglich der for-Schleife ...

Batch & Shell
Datum in Datei speichern und wieder auslesen
gelöst Frage von AndroxinBatch & Shell3 Kommentare

Moinsen, ich spiele gerade ein wenig mit der Powershell und Zeitstempeln rum: Zeitstempel mit Get-Date erstellen, als String in ...

Neue Wissensbeiträge
Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 3 StundenVerschlüsselung & Zertifikate

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 14 StundenWindows 102 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 15 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner3 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...