smbclient: Logfile auf dem Server

Probleme mit Samba, NFS, FTP und Co.
Antworten
chmeyer
Beiträge: 96
Registriert: 03.02.2010 21:09:12
Wohnort: RLP

smbclient: Logfile auf dem Server

Beitrag von chmeyer » 15.06.2016 17:06:47

Hallo zusammen,

ich möchte auf einem Windows-Server ein gemeinsames Logfile aller Debian-Clients führen.
Damit das ganze skriptgesteuert im Hintergrund läuft, scheint smbclient das Programm der Wahl zu sein. Mit -k bzw. -P und -N kann man die Authentifizierung ja Kerberos bzw. Samba überlassen.

Mein Problem:
Gibt es eine elegante Möglichkeit, das Logfile von verschiedenen Clients "gleichzeitig" zu schreiben?

Auf einem reinen Linux-System bin ich gewohnt das Logfile in folgender Weise zu befüllen:

Code: Alles auswählen

echo "Meine Log-Meldung: $LOGINFO" >> /var/log/xyz/mein_log.log
Bei smbclient vermisse ich die Möglichkeit des Anhängens von Daten an eine Datei (z.B. mit ">>").
Jetzt könnte ich mir die Datei zwar erst holen, dann verändern und schließlich wieder hochladen:

Code: Alles auswählen

smbclient SERVER -c 'cd mydir; get serverlog.log local_log.log'
echo "Meine Log-Meldung: $LOGINFO" >> ./local_log.log
smbclient SERVER -c 'cd mydir; put local_log.log serverlog.log'
Allerdings gefällt mir das nicht wirklich:
Zu umständlich, zu viel (unnötiger) Traffic und bei vielen Log-Ereignissen verschiedener Clients könnte auch ein Eintrag verloren gehen.

Danke und viele Grüße
Christian

Edit:
Natürlich soll es keine GUI-Lösung sein und auch das permanente mounten (z.B. mit "mount -t cifs ..." oder "gvfs-mount") möchte ich gerne vermeiden. Das Netzwerk-Share soll nur für die Logdatei verwendet werden und für alle anderen Benutzer unsichtbar bleiben.

Edit2:
Holen, ändern und schreiben der Datei braucht im Schnitt 0,06 = 1/20 Sekunden. Selbst wenn sich mehrere Benutzer in der selben Sekunde anmelden sollte es keine großen Probleme geben. "Für's erste" ist es also "gut genug".

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: smbclient: Logfile auf dem Server

Beitrag von ThorstenS » 28.06.2016 12:11:18

Hi,
das was du suchst, ist ein syslog-Server. Den kannst du auch auf einem WindowsServer laufen lassen. Hier z.B. beschrieben:
http://help.papertrailapp.com/kb/config ... m-windows/

Was machst du dann aber mit den Daten? Wertest du die von Hand aus, oder hast du schon auf dem Windows Server ein entspr. Produkt im Einsatz?

Wenn nein, dann lege ich dir ganz dringend Kibana4 ans Herz. Eine eigene VM dafür ist flott aufgesetzt. Hier mal eine 4 teilige Serie zum Umgang mit Kibana: https://www.timroes.de/2015/02/07/kiban ... roduction/

Glaub mir, wenn du einmal damit angefangen hast deine Daten nach elasticsearch zu schmeißen, wirst du damit nicht mehr aufhören wollen. Du bekommst eine ganz andere Sicht auf verschiedene events. (z.B. die Firewall Logs lassen sich deutlich besser auswerten, wenn du sie grafisch präsentiert bekommst).

Bei mir loggen alle linux-Server über das lokale Paket logstash auf den logserver. Switche &Co. benutzen den eingebauten syslog, den logstash auf dem logserver zur Verfügung stellt.

Code: Alles auswählen

root@logserver01:~# cat /etc/logstash/conf.d/32syslog.conf
input {
  tcp {
    port => 5000
    type => syslog
  }
  udp {
    port => 5000
    type => syslog
  }
}

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}
Das Programm logger kennst du? Damit schreibst du deine Infos in ein lokales Logfile, welches logstash dann zum zentralen Kibana weiterreicht. Deine Anforderung von oben ließe sich damit also lokal durch einen einzigen logger-Aufruf erledigen und trotzdem hast du sie umgehend im Webinterface (ok, per default aktusalisiert sich die Ansicht nur alle 15 Sekunden…)

Ich denke auf lange Sicht zahlt sich ein zentrales Logmanagement absolut aus.


P.S.
Ich spreche schon wieder mit dir ;-)

chmeyer
Beiträge: 96
Registriert: 03.02.2010 21:09:12
Wohnort: RLP

Re: smbclient: Logfile auf dem Server

Beitrag von chmeyer » 29.06.2016 00:04:51

was du suchst, ist ein syslog-Server
...Kibana4 ...
...logger...
Jein.

Ich habe hier eine homogene Windowsumgebung mit Active Directory Server, die auch nicht weiter verändert oder verbessert werden soll.

Meine Präferenz für Debian hat mich einfach mal probieren lassen, was alles damit geht. Deshalb sind die (im Moment) 35 Debian Rechner so eine Art "Hobby" von mir, die ich nach und nach ausbaue. Die wirklich wichtigen Logs dieser Computer werden von FAI auf dem fai-server gespeichert und mit faiwatch lassen diese sich auch sehr schnell und übersichtlich per Terminal oder ssh auswerten. Damit sehe ich schnell und übersichtlich die auftretenden Probleme.

Zurück zu den Logs auf dem Windows Server:
Der Windows Server soll bleiben, wie er ist und ich möchte mit den Debian-Computern auch nur die Informationen auf dem Share loggen, die die "regulären" Windows-Monokultur-Rechner dort ablegen. Auch die Auswertung dieser Daten soll so bleiben, wie sie ist.

Dummerweise schreiben aber ALLE Windowsclients in das selbe Logfile auf einem gemeinsamen Windows-Netzlaufwerk. Daran komme ich nicht vorbei. Deshalb wollte ich meine Log-Einträge auch einfach nur an die Datei anhängen, statt diese erst zu herunter zu laden, dann lokal zu verändern und schliesslich wieder zu schreiben - und das am Besten bevor wieder ein anderer Rechner die selbe Datei bearbeitet.

Es würde mich wirklich interessieren, wie cifs-mount oder gvfs-mount das macht um den Datenverlust möglichst auszuschliessen, denn klar: auf einem gemounteten Netzlaufwerk funktioniert echo "XYZ" >> /media/server/share/logfile.log (zumindest auf den ersten Blick) genau so, wie ich es mir wünsche. ...

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: smbclient: Logfile auf dem Server

Beitrag von ThorstenS » 29.06.2016 11:46:18

ok.
Da du den mount nicht dauerhaft haben möchtest, bliebe in meinen Augen nur noch die Möglichkeit über, die du selbst schon nutzt: mounte das share temporär, schreib die Info mit >> hinten an das Logfile dran und umounte wieder.

Oder du baust dir ein Script mit psexec/winexe¹ , welches die Logmessage remote an ein Windowsscriptchen übergibt. Und dieses Script schreibt dann die Info, sodaß es auch keine locking-Probleme gibt.

[1] http://sf.net/p/winexe

chmeyer
Beiträge: 96
Registriert: 03.02.2010 21:09:12
Wohnort: RLP

Re: smbclient: Logfile auf dem Server

Beitrag von chmeyer » 29.06.2016 12:45:21

Danke.
Unter "mounten" stelle ich mir eigentlich etwas anderes vor, wobei ich nicht weiß, wie mount das macht.
Mich stört halt das doppelte Kopieren der Datei.

Nach dem, was Du schreibst könnte winexe da evtl. ein besserer Ansatz sein.
Danke.

Antworten