[Gelöst] socat für 7270v3

volker1

Neuer User
Mitglied seit
8 Mrz 2009
Beiträge
12
Punkte für Reaktionen
0
Punkte
1
Zuletzt bearbeitet:
Hallo,

bei so einer beschreibung kann dir glaub ich keiner helfen: fehlermeldungen? welche toolchain? wo war die version für 7050?
mal andere frage: warum socat? wie wäre es mit telnet oder ssh? oder irre ich mich, was socat ist?

gruß
R@d
 
Ich habe auch die Version hier aus dem Forum für die 7050 versucht diese läuft aber nicht auf der 7270.
Evtl. gibt es Abhängigkeiten, die mit deiner Box nicht funktionieren:
Code:
--disable-help          disable help
--disable-stdio         disable STDIO support
--disable-fdnum         disable FD-number support
--disable-file          disable direct file support
--disable-creat         disable direct create support
--disable-gopen         disable open for UNIX socket support
--disable-pipe          disable pipe support
--disable-termios       disable termios support
--disable-unix          disable UNIX domain socket support
--disable-abstract-unixsocket   disable abstract UNIX domain socket support
--disable-ip4           disable IPv4 support
--disable-ip6           disable IPv6 support
--disable-rawip         disable raw IP support
--disable-genericsocket disable generic socket support
--disable-interface  disable network interface support
--disable-tcp           disable TCP support
--disable-udp           disable UDP support
--disable-sctp           disable SCTP support
--disable-listen        disable listen support
--disable-socks4        disable socks4 support
--disable-socks4a       disable socks4a support
--disable-proxy         disable proxy connect support
--disable-exec          disable exec support
--disable-system        disable system (shell) support
--disable-pty           disable pty support
--disable-ext2          disable ext2 fs attributes support
--disable-readline      disable readline support
--disable-openssl       disable OpenSSL support
--disable-fips          disable OpenSSL FIPS support
--disable-tun           disable TUN/TAP support
--disable-sycls         disable system call tracing
--disable-filan         disable file descriptor analyzer
--disable-retry         disable retry support
--enable-msglevel=N     set max verbosity to debug,info,notice,warn,error,fatal
--disable-libwrap       disable libwrap support
Das socat Paket gibt es auch im Freetz trunk. Evtl. kannst Du mit diesem Paket, das binary kompilieren.
 
Hallo,
@radislav
Ich möchte socat nutzen weil dies in einem script von AVM so angegeben ist. Bei der Eingabe des Befehls "telnet" in der Telnet-Sitzung mit der FB bekomme ich die Meldung: -sh: telnet: not found
Bei der Version für die 7050 erhalte ich die Fehlermeldung: can't load library 'libutil.so.0, obwohl diese vorhanden ist. Diese lib wird von einem anderen Programm genutzt.
Der Sinn dahinter ist das beim wählen der Nummer #95*0* - #95*9* ein script aufgerufen wird wo dann ein Befehl ausgeführt wird. Dieser Befehl ist halt socat, der an einen Port auf der FB einen weiteren Befehl sendet (Fhem-Steuerung).

@sf3978

Vielen Dank für deine Info, ich werde mir das mal anschauen. Die Umgebung für Freetz habe ich eh am laufen.
 
Bei der Version für die 7050 erhalte ich die Fehlermeldung: can't load library 'libutil.so.0, obwohl diese vorhanden ist. Diese lib wird von einem anderen Programm genutzt.
Evtl. sucht socat diese library an einer anderen Stelle, als bei dir vorhanden.

Der Sinn dahinter ist das beim wählen der Nummer #95*0* - #95*9* ein script aufgerufen wird wo dann ein Befehl ausgeführt wird. Dieser Befehl ist halt socat, ...
OK, den Befehl im Script könnte man evtl. auch in telnet ändern. Aber es wird schon richtig sein, warum socat und nicht telnet benutzt wird. Evtl. wird socat mit der libcrypto & co. verwendet und das kann telnet nicht.
 
@sf3978

Habe gerade das socat aus dem frisch kompilierten Freetz probiert, gleiche Fehlermeldung: can't load library 'libutil.so.0'
Den Pfad zu dieser lib setze ich mit: "export LD_LIBRARY_PATH='/var/media/ftp/UDISK-PDU01-8G92I2-0-00/lib'" in der debug.cfg.

Telnet scheint aber nicht installiert zu sein, sonst würde ich es damit testen, wenn ich den Befehl von PC mit telnet absetze sollte das doch das gleiche Ergebnis liefern,oder?

PS Wie kann ich telnet direkt einen Text mitgeben? Vom PC funktioniert es mit Telnet, aber auf der FB ist kein Telnet.
 
Zuletzt bearbeitet:
Habe gerade das socat aus dem frisch kompilierten Freetz probiert, gleiche Fehlermeldung: can't load library 'libutil.so.0'
Den Pfad zu dieser lib setze ich mit: "export LD_LIBRARY_PATH='/var/media/ftp/UDISK-PDU01-8G92I2-0-00/lib'" in der debug.cfg.
Hier mal die Abhängigkeiten von socat (wenn mit Freetz kompiliert):
Code:
root@fritz:/var/media/ftp/uStor01/archiv# ldd ./socat
        libssl.so.0.9.8 => /usr/lib/[COLOR=red]freetz[/COLOR]/libssl.so.0.9.8 (0x2aabe000)
        libwrap.so.0 => /usr/lib/[COLOR=red]freetz[/COLOR]/libwrap.so.0 (0x2ab0a000)
        [COLOR=red]libutil.so.0 => /lib/libutil.so.0 (0x2ab22000)[/COLOR]
        libreadline.so.6 => /usr/lib/[COLOR=red]freetz[/COLOR]/libreadline.so.6 (0x2ab33000)
        libncurses.so.5 => /usr/lib/[COLOR=red]freetz[/COLOR]/libncurses.so.5 (0x2ab77000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2abb5000)
        libc.so.0 => /lib/libc.so.0 (0x2abd3000)
        libcrypto.so.0.9.8 => /usr/lib/[COLOR=red]freetz[/COLOR]/libcrypto.so.0.9.8 (0x2ac4e000)
        libdl.so.0 => /lib/libdl.so.0 (0x2ad5f000)
        libnsl.so.0 => /lib/libnsl.so.0 (0x2ad72000)
        ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x2aaa8000)
Evtl. kannst Du das Freetz-Paket für socat so ändern, dass das resultierende binary keine Abhängigkeiten in "/usr/lib/freetz" hat. Ob dann socat für dein Script bzw. deine Anwendung noch brauchbar ist, weiß ich nicht. Der Autor musst sich schon was gedacht haben, warum er socat und nicht telnet benutzt hat.
 
Ich habe leider keine Ahnung was und wie ich etwas in einem Freetz-Paket ändern kann, so das am Ende noch etwas brauchbares dabei herauskommt. Fhem oder Perl, welches ja auch auf der FB läuft und diese lib braucht findet die in dem Pfad den ich vorher angegeben habe. Sollte der export LD_LIBRARY_PATH nicht für alle Programme gelten? Tut mir leid das ich so viele Fragen stelle, aber ich versuche das zu verstehen, man will ja nicht dumm sterben.

ldd ist nicht auf meiner FB.
 
Zuletzt bearbeitet:
Poste mal den output von:
Code:
find / -iname [COLOR=black]'[/COLOR][COLOR=black]libutil*[/COLOR]'
auf deiner Box.

EDIT:

ldd ist nicht auf meiner FB.

Du brauchst ldd nicht auf deiner Box. Aber find, das hast Du auf deiner Box.
 
Zuletzt bearbeitet:
Aber es wird schon richtig sein, warum socat und nicht telnet benutzt wird. Evtl. wird socat mit der libcrypto & co. verwendet und das kann telnet nicht.
aber ssh kann verschlüsselung - es muss andere gründe geben. aber egal - wir wollen ja nicht nur funktion, sondern auch spaß am kompilieren und an "ich hab mal was anderes" haben.

vielleicht würde es sinn machen, das binary für socat statisch zu kompilieren? ansonsten versuch es doch erstmal per hand, socat zu starten (mit dem richtigen library-pfad). evtl. kannst du noch die lib aus freetz kopieren und auf sie verlinken.
 
Hier der output von find:
# find / -iname 'libutil*'
/var/media/ftp/UDISK-PDU01-8G92I2-0-00/lib/libutil.so.0
/var/media/ftp/UDISK-PDU01-8G92I2-0-00/lib/libutil.so
/var/media/ftp/UDISK-PDU01-8G92I2-0-00/lib/libutil.so.0.new
 
@radislav
ich habe die lib mal im gleichen Pfad wie die vorhandene durch die aus dem Freetz ersetzt. Das gab aber den gleichen Fehler.
Was muss ich machen um socat mit dem richtigen Pfad zur Library zu starten und mit der lib zu verlinken?
 
Wenn ich mit diesem Befehl
# strace -e open ./socat
open("/lib/libssl.so.0.9.8", O_RDONLY) = 3
open("/lib/libutil.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libutil.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/libutil.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)

den Pfad suche in dem socat die library erwartet und dann versuche dort einen link auf die vorhandene lib zu erstellen bekomme ich diese Fehlermeldung:
ln: libutil.so.0: Read-only file system
 
Rufe das Programm doch so auf:
Code:
LD_LIBRARY_PATH="/var/media/ftp/UDISK-PDU01-8G92I2-0-00/lib:$LD_LIBRARY_PATH" ./socat
Ansonsten wäre die Ausgabe des Inhalts davon Interessant, denn offensichtlich wird die Lib ja nicht dort genutzt.
Code:
echo "$LD_LIBRARY_PATH"
Wie genau setzt du denn den Pfad? Ist sicher, dass die Shell in der du das testest, ein "Kind" davon ist?
 
Hallo MaxMuster,

vielen Dank für deine Hilfe. Das Ergebnis von echo "$LD_LIBRARY_PATH" ist eine leere Zeile.

Der Aufruf mit LD_LIBRARY_PATH funktioniert aber. Was jetzt für mich unklar ist, ist das ich den LD_LIBRARY_PATH schon beim starten der Box in der debug.cfg angebe.

Inhalt debug.cfg:
export PERL5LIB='/var/media/ftp/UDISK-PDU01-8G92I2-0-00/perl/usr/lib/perl5/5.10:/'
export PATH=/var/media/ftp/UDISK-PDU01-8G92I2-0-00/perl/usr/bin/:/var/media/ftp/UDISK-PDU01-8G92I2-0-0
export LD_LIBRARY_PATH='/var/media/ftp/UDISK-PDU01-8G92I2-0-00/lib'
cd /var/media/ftp/UDISK-PDU01-8G92I2-0-00/fhem
perl fhem.pl fhem.cfg &:w


Ist diese definition nicht global sondern nur für ein Programm?
 
Alle Settings gelte nur für die aktuelle Shell und deren Kindprozesse.
Versuche es mal wie hier beschrieben und mache die Ergänzungen in der "profile" Datei:

Code:
cp /etc/profile /var/tmp
mount -o bind /var/tmp/profile /etc/profile
# jetzt an passender Stelle einfügen, ggf. per sed oder auch
cat < 'EOF' >> /var/tmp/profile
export PATH="$PATH:/var/media/ftp/UDISK-PDU01-8G92I2-0-00/perl/usr/bin/:/var/media/ftp/UDISK-PDU01-8G92I2-0-0"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/var/media/ftp/UDISK-PDU01-8G92I2-0-00/lib"
EOF

Jörg
 
Hallo Jörg,

nach einem reboot der FB sind die einträge in der profile nicht mehr vorhanden.
Wo habe ich etwas falsches gemacht?
 
Zuletzt bearbeitet:
Danke an alle die mir geholfen haben, ich habe es jetzt durch anpassen der scripte für mich zufriedenstellend gelöst.
 
Zur Vervollständigung: Die Änderungen an der profile-Datei müsste dann in die debug.cfg, damit es bei jedem Neustart gemacht wird.

Und zum Schluss noch ein statisch gelinktes Programm, das sollte gar keine Lib-Abhängigkeiten haben, ist dafür aber 1,1 MB ;-)
 

Anhänge

  • socat.gz
    478.9 KB · Aufrufe: 54
Hallo Jörg,

mit dem socat aus deinem Anhang funktioniert es jetzt noch einfacher. Darf ich diese Datei weiterverteilen, falls jemand interesse daran hat?

Volker
 
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.