[HowTo] ZABBIX Agentd für Freetz

MV69M7ib

Neuer User
Mitglied seit
2 Aug 2010
Beiträge
34
Punkte für Reaktionen
0
Punkte
6
Hallo,

habe mir heute (Nacht) mal etwas Zeit genommen und Zabbix Agentd 1.4 + GUI für Freetz vorbereitet.
Ist mit einem Zabbix Server 1.8.4 getestet.

Jetzt auch mit Zabbix Agent 1.8
 

Anhänge

  • zabbix_agentd.patch.txt
    15.9 KB · Aufrufe: 38
  • freetz-zabbix_agentd.tar.gz
    5.2 KB · Aufrufe: 24
Zuletzt bearbeitet:
Hi.

Warum brauchst du die Änderung an der Kernelconfig (CONFIG_KMOD)?

Ansonsten gute Arbeit!

Gruß
Oliver
 
Hi,

das ist über die Option "Automatic kernel module loading" ungewollt mit rein gerutscht. Hab's gerade aus dem Diff geschmissen. Danke für den Hinweis
 
Zabbix funktioniert of meinem Freetz, aber jetzt will ich eigene funktionen hinzufugen. Auch das ist möglich...
Jetzt habe ich ein Problem mit "permission".
'ping' läuft nicht mit 'zabbix' und normalerweise wurde ich 'sudo' einsetzen, aber die ist auch nicht vorhanden.
Vielleicht muss ich zabbix als 'root' gebrauchen.....

Ist es schwierig 'sudo' zu implementieren?
Ich habe so etwas noch niemals getan.....
Vielleicht kann jemand helfen?

http://www.zabbix.com/forum/showthread.php?t=21054

Ist dieses Forum das offizielle Forum von Freetz?
Seit einige Jahren bin ich Mitglied aber das war für mein Pirelli VoIP Handy.
Deutsch ist auch nicht die Sprache worin ich mich gut ausdrucken kann.
 
Zuletzt bearbeitet:
Ist es schwierig 'sudo' zu implementieren?
Ich habe so etwas noch niemals getan.....
Vielleicht kann jemand helfen?
Hier auf die Schnelle, ein Paket für sudo aus OpenWRT (siehe Patch im Anhang).
Wie man sudo vor dem Kompilieren, richtig konfiguriert (sudoers & co.), musst Du selber eruieren/wissen.;)
Code:
root@fritz:/var/media/ftp/uStor01/archiv# ldd ./sudo
        libutil.so.0 => /lib/libutil.so.0 (0x2aabe000)
        libcrypt.so.0 => /lib/libcrypt.so.0 (0x2aacf000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2aaf3000)
        libc.so.0 => /lib/libc.so.0 (0x2ab11000)
        ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x2aaa8000)
Code:
root@fritz:/var/media/ftp/uStor01/archiv# ./sudo -h
usage: sudo -h | -K | -k | -L | -V
usage: sudo -v [-AknS] [-g groupname|#gid] [-p prompt] [-u user name|#uid]
usage: sudo -l[l] [-AknS] [-g groupname|#gid] [-p prompt] [-U user name] [-u user name|#uid] [-g groupname|#gid] [command]
usage: sudo [-AbEHknPS] [-C fd] [-g groupname|#gid] [-p prompt] [-u user name|#uid] [-g groupname|#gid] [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-C fd] [-g groupname|#gid] [-p prompt] [-u user name|#uid] file ...
 

Anhänge

  • sudo.patch.txt
    6.5 KB · Aufrufe: 11
Danke vielmals, aber.....

Ich weiss nicht wo ich die Inhalt von make/sudo.orig bekomme.

Kannst du vielleicht einige anweisungen geben wie ich die bekomme?
Ich nehme an dass diese Dateien zum OpenWRT gehören.
 
Ich weiss nicht wo ich die Inhalt von make/sudo.orig bekomme.
make/sudo.orig gibt es nicht und muss es auch nicht geben.;)
Ich nehme an dass diese Dateien zum OpenWRT gehören.
Nein, ich habe mich von OpenWRT inspirieren lassen.;)

Du musst im Wurzelverzeichnis des trunk den Patch anwenden (patch -p0 < sudo.patch.txt) und danach die Einträge in die make/Config.in und make/external.in machen. Zum testen ein "make sudo-precompiled".

EDIT:


Code:
:~/myfreetz/freetz7293/freetz-trunk> [COLOR=red][B]patch -p0 < sudo.patch.txt[/B][/COLOR]
patching file make/sudo/Config.in
patching file make/sudo/external.files
patching file make/sudo/external.in
patching file make/sudo/files/root/etc/sudoers
patching file make/sudo/Makefile.in
patching file make/sudo/sudo.mk
 
Zuletzt bearbeitet:
Du musst im Wurzelverzeichnis des trunk den Patch anwenden (patch -p0 < sudo.patch.txt) und danach die Einträge in die make/Config.in und make/external.in machen. Zum testen ein "make sudo-precompiled".

das "patch -p0 sudo.patch.txt" ist gelungen...
Aber ich verstehe nicht was du meinst mit "danach die Einträge in die make/Config.in und make/external.in machen."

Ich verstehe das Konzept nicht womit ich das jetzt integrieren kann.

Wenn ich "make sudo-precompiled" eingebe wirden die Quelldateien heruntergeladen und einiges compiliert...
Ich dachte dass ich mit 'make menuconfig' das 'sudo' selektieren konnte, aber ich kann die nicht sehen.
 
Ich probiere auch mit suid mein Problem zu lösen.
Wie kriege ich die datei /etc/busybox.conf in meinem image?
Auch muss ich ein 'chmod u+s /bin/busybox' machen....

Wenn ich das alles im ./build/modified/filesystem/etc und ./build/modified/filesystem/bin mache dann wird das alles nach einem 'make' wieder zuruckgesetzt.
 
Aber ich verstehe nicht was du meinst mit "danach die Einträge in die make/Config.in und make/external.in machen."
Im Menu "Testing" der make/Config.in
Code:
source make/sudo/Config.in
eintragen und speichern.
In der make/external.in
Code:
source make/sudo/external.in
eintragen und speichern.


Ich dachte dass ich mit 'make menuconfig' das 'sudo' selektieren konnte, aber ich kann die nicht sehen.
Jetzt kannst Du mit 'make menuconfig', 'sudo' selektieren.
 
Etwas geht hier schief:

pastebin,com
http://**********com/pFQRt83J

Code:
freetz@freetz-linux:~/src/freetz-trunk$ type source
source is a shell builtin

Mein Freetz ist ein virtualbox machine....


Und weisst du vielleicht wie ich die Attributen von /bin/busybox ändern kann und ein /etc/busybox.conf hinzufugen mit diesen Inhalt?

Code:
[SUID]
su = ssx 0.0
passwd = ssx 0.0
more = ssx 0.0
grep = ssx 0.0
ping = ssx 0.0
 
Zuletzt bearbeitet:
Du sollst die "source ..." Zeilen nicht ausführen, sondern die einzelne Zeile jeweils in den genannten Dateien (make/Config.in und make/external.in) hinzufügen
 
Du sollst die "source ..." Zeilen nicht ausführen, sondern die einzelne Zeile jeweils in den genannten Dateien (make/Config.in und make/external.in) hinzufügen
:)
Jetzt klappt es....

Nun dieses Problem lösen:
Code:
merging kernel image
  kernel image size: 16166656 (max: 16121856, free: -44800)
ERROR: kernel image is 44800 bytes too big. See http://trac.freetz.org/wiki/FAQ#Filesystemimagetoobig for details

Dass is gelöst, aber jetzt ein anderes problem


Code:
sudo: /etc/sudoers is mode 0644, should be 0440
sudo: no valid sudoers sources found, quitting

Wie sorge ich dafur das /etc/sudoers dieses Attribut hat?
Wie sorge ich dafur das ich ein "folder" /etc/sudoers.d bekomme?

sudo ist jetzt auf Freetz, aber funktioniert nicht weil /etc/sudoers.d nicht existiert und /etc/sudoers die falsch Attributen hatt.

'visudo' hab ich auch nicht nötig weil /etc/sudoers read-only ist. Vielleicht kann ich so wieder 88 KB sparen...
 
Zuletzt bearbeitet:
Ich habe doch geschrieben, dass Du vor dem Kompilieren deines Freetz-Images, sudo konfigurieren sollst.;)
Code:
sudo: /etc/sudoers is mode 0644, should be 0440
sudo: no valid sudoers sources found, quitting
Wie sorge ich dafur das /etc/sudoers dieses Attribut hat?
Im Build-System "chmod 440 .../etc/sudoers" machen, nach dem Du in die sudoers-Datei die richtigen Einträge gemacht hast (denn ro). Besser nocht im /etc ein symlink auf die sudoers-Datei, die sich dann in einem rw-Bereich befinden soll. Aber das sind Freetz-basics und hat mit sudo nichts zu tun.;)
Wie sorge ich dafur das ich ein "folder" /etc/sudoers.d bekomme?
sudo ist jetzt auf Freetz, aber funktioniert nicht weil /etc/sudoers.d nicht existiert und /etc/sudoers die falsch Attributen hatt.
Auch hier im Build-System, mit einem symlink auf rw-Bereich versuchen, den /etc/sudoers.d wäre ro, und das denke ich ist nicht gut.
'visudo' hab ich auch nicht nötig weil /etc/sudoers read-only ist. Vielleicht kann ich so wieder 88 KB sparen...
In der sudo.mk-Datei, visudo löschen und speichern, wenn /etc/sudoers ro bleibt.
 
Willst Du nicht lieber herausfinden, warum ping nicht läuft?
Auf einem normalen System läuft ping auch ohne root Rechte.
Ping läuft nur fur root. ping braucht privilegen rechten zum interface (RAW packets).

Code:
root@Mr-57b3:/var/mod# sudo -u zabbix ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
ping: permission denied (are you root?)

Ein "normales system" hatt die suid bit gesetzt (rwsr-xr-x), weil es etwas unpraktisch ist.
Das ist mit ein busybox system auch möglich aber dafür muss ich ein /etc/busybox.conf gebrauchen.
/bin/ping ist nur ein symlink zu /bin/busybox. Mit make busybox-menuconfig ist dass möglich aber dann gillt das für alle users.
Code:
root@ubuntuLTS:~# ls -l `which ping`
-rwsr-xr-x 1 root root 34756 2010-03-12 00:12 /bin/ping

ein 'erwachsenes ping' kann das Unterschied machen zwischen ein wirkliche 'root' und ein 'setuid root' und nur ein 'wirkliches root' can zb. ein pingflood machen.

Aber 'ping' ist nicht mein einziges Problem. Darum habe ich lieber sudo.


Aber es klappt jetzt...
Ich hätte noch dieses Problem:
Code:
root@Mr-57b3:/var/mod/root# sudo -u zabbix sudo ping 10.0.0.56
sudo: must be setuid root

Nochmals ein 'make' aber bevor dass hier gemacht:
Code:
chmod u+s ./packages/target-mipsel_uClibc-0.9.31.1/sudo-1.7.4p4/root/usr/bin/sudo

Bleibt das jetzt gut oder muss ich das kontrolieren bzw. anders machen?

Code:
root@Mr-57b3:/var/mod/root#  sudo -u zabbix sudo ping -c1 10.0.0.56
PING 10.0.0.56 (10.0.0.56): 56 data bytes
64 bytes from 10.0.0.56: seq=0 ttl=255 time=0.664 ms

--- 10.0.0.56 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.664/0.664/0.664 ms


root@Mr-57b3:/var/mod/root# cat /etc/sudoers.d/zabbix
zabbix ALL=(ALL) NOPASSWD: /bin/grep
zabbix ALL=(ALL) NOPASSWD: /sbin/ifconfig
zabbix ALL=(ALL) NOPASSWD: /bin/ping


root@Mr-57b3:/var/mod/root# cat /tmp/flash/zbx_agentd_user_parameters
####### USER-DEFINED MONITORED PARAMETERS #######
# Format: UserParameter=<key>,<shell command>
# Note that shell command must not return empty string or EOL only
UserParameter=net.ping[*], sudo ping -c1 -W1 $1 2>/dev/null | grep -c 'bytes f'
UserParameter=dsl.upstream, grep -o 'US Connection Rate:.*' /proc/avalanche/avsar_modem_stats | awk '{print $4}' | tr -cd '0-9'
UserParameter=dsl.downstream, grep -o 'DS Connection Rate:.*' /proc/avalanche/avsar_modem_stats | awk '{print $4}' | tr -cd '0-9'
UserParameter=dsl.upsnr, grep -o 'US Margin:.*' /proc/avalanche/avsar_modem_stats | awk '{print $3*10}'
UserParameter=dsl.downsnr, grep -o 'DS Margin:.*' /proc/avalanche/avsar_modem_stats | awk '{print $3*10}'
UserParameter=dsl.upcrc, grep -A1 '(TX) Interleave path' /proc/avalanche/avsar_modem_stats | grep CRC: | awk '{print $2}'
UserParameter=dsl.downcrc, grep -A1 '(RX) Interleave path' /proc/avalanche/avsar_modem_stats | grep CRC: | awk '{print $2}'
UserParameter=dsl.los, grep -o 'LOS errors:.*' /proc/avalanche/avsar_modem_stats | awk '{print $3}' | tr -cd '0-9'


root@Mr-57b3:/var/mod/root# ls -l /etc | grep sudoers
-r--r-----    1 root     root          2849 Sep  8 17:41 sudoers
drwxr-xr-x    2 root     root            23 Sep  8 19:11 sudoers.d

root@Mr-57b3:/var/mod/root# ls -l /etc/sudoers.d/
-r--r-----    1 root     root           116 Sep  8 17:40 zabbix

root@Mr-57b3:/var/mod/root# ls -l `which sudo`
-rwsr-xr-x    1 root     root        153200 Sep  8 17:44 /usr/bin/sudo

The sky is the limit.....

Vorläufig bin ich zufrieden aber ich denke das ich die /etc/sudoers und /etc/sudoers.d noch im rw bereich setze aber dafur muss ich erstenz die "Freetz basics" kennen.

Mehrere Fritz!boxen werden jetzt Freetzboxen mit Zabbix. Auch neuere modelle....
Kann man einfag mit zum Beispiel 'diff' das unterschied zwischen die configs sehen?


Vielen Dank.
Ich hoffe du kannst jetzt auch etwas hiermit.
 
Zuletzt bearbeitet:
Und individuelle Änderungen am Image kann man im Skript fwmod_custom machen.
Dass habe ich Gestern nicht gesehen.
Werde ich Heute untersuchen.

Ich brauche ein /etc/busybox.conf mit '-rw-r-----' Attribut und /bin/busybox mit '-rwsr-xr-x'
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.