start über callerid.conf
Hallo zusammen, ich habe hier auf einer 7.1/2.2.19/isdn-flat folgendes am laufen: Bei Anruf auf einer bestimmten MSN wird ein script gestartet, das meine IP auf eine Webseite schreibt, und den proftpd startet. Das geht im wesentlichen so: ,----[ /etc/isdn/callerid.conf ] | [MSN] # [1] | NUMBER = xxxxx | ALIAS = TUX | ZONE = 1 | START = { | [FLAG] | FLAGS = IRU | PROGRAM = /usr/local/sbin/ipsend | } `---- ,----[ /usr/local/sbin/ipsend ] | #!/bin/sh | /usr/sbin/isdnctrl dial ippp0 > /dev/null 2>&1 | test -e /var/run/proftpd.pid || /usr/sbin/rcproftpd start | sleep 3 | DATE=`date +%c` | IP=`/sbin/ifconfig ippp0 | awk -F: /inet/'{print $2}' | \ | awk '{print $1}'` | cat /var/ip/html/top.html > /var/ip/html/index.html | echo '<a href="ftp://'$IP':21">''ftp://'$IP':21''</a>' >> \ | /var/ip/html/index.html | cat /var/ip/html/bottom.html >> /var/ip/html/index.html | ftp -n MeinFTPUplaod << EOT | user MeineUSERID MeinPASS | send /var/ip/html/index.html index.html | quit | EOT `---- In ip-down wird der proftpd dann wieder runtergefahren und ich muß lediglich darauf achten das die Einwahl inerhalb der 180 sec dod idle erfolgt. Alles läuft problemlos :). Jetzt wollte ich die gleiche Lösung für einen Bekannten implementieren SuSE7.3/2.4.10/dsl. Im script habe ich ppp0 statt ippp0 verwendet und statt isdnctrl ping (kenne mich mit dem, beim Bekannten laufenden rp-pppoed nicht so aus). Eine isdn Karte (FritzClassik) wurde eingebaut und hardwäremäßig konfiguriert. In /var/log/messages logt sie entsprechend die Anrufe mit. Das script ipsend funktioniert (von Hand aufgerufen) wie gewünscht. Der proftpd startet, die IP wird aufgeladen und man kann von extern zugreifen. Beim Anruf auf der besagten MSN jedoch passiert folgendes: ,----[ /var/log/messages ] | work isdnlog: ... * Call to tei 127 from ... RING (Speech) | work isdnlog: ... * Call to tei 127 from ... HLC: CCITT, Telefonie | work kernel: isdn_net: call from ... -> ... | work kernel: isdn_net: Service-Indicator not 7, ignored | work kernel: isdn_tty: call from ... ->... ignored | work isdnlog: Starting ProFTPD Server: ..done | work proftpd[1584]: work.rsdata-edv.priv - listen() failed in \ | inet_listen(): Bad file descriptor | work isdnlog: ... * Call to tei 72 from ..., ... HANGUP | work isdnlog: 212.62.80.99 | work isdnlog: Syntax error, command unrecognized. `---- Obwohl die eigentlich "schändliche" Fehlermeldung vom proftpd kommt, kann es IMHO nicht an der proftpd.conf liegen, denn es läuft ja manuell. Die Meldung des proftpd interpretiere ich in Richtung: "Probleme mit der Startart (inetd-standalone)". In der proftpd.conf steht: ServerType standalone #ServerType inetd DefaultServer on und der inetd.conf Eintrag ist auskommentiert. Ausserdem läuft der mauelle Aufruf ja wie gewüscht und bei mir zuhause (mit gleicher config) läuft alles. *wunder* Daher muss es irgendeinen Unterschied geben, ob ich ipsend von Hand aufrufe oder ob isdnlog das durch die callerid.conf macht. Ich vermute auch einen Zusammenhang mit der Fehlermeldung von isdnlog, obwohl die ja erst später folgt. Leider fehlt mir irgendwie der Ansatzpunkt, wo ich nach den Ursachen fahnden soll: - isdn System, wo? - proftpd.conf? - mein script ipsend (Rechte derzeit 4700 - habe aber schon so ziemlich alles durch)? Irgendwelche Ideen? TIA. [1] BTW: Was genau ist der Unterschied zwischen [MSN] und [NUMBER] -- :wq-y Maik
Maik Holtkamp schrieb:
- mein script ipsend (Rechte derzeit 4700 - habe aber schon so ziemlich alles durch)?
Pack mal ein "set -x" in das Skript, damit man sehen kann, wo es genau hapert. Vermutlich möchte eines der Programme irgendwelche Umgebungsvariablen (z.B. HOME, USER, LOGNAME) sehen, die beim Aufruf aus der callerid.conf nicht gesetzt sind. Das kannst Du mit "env -i ipsend" testen - dann bekommt das ipsend gar keine Umgebungsvariablen. Viele Grüsse... Michael
Hy, Am 02/06/09@13:45 schrieb Michael Mauch:
Maik Holtkamp schrieb:
- mein script ipsend (Rechte derzeit 4700 - habe aber schon so ziemlich alles durch)?
Pack mal ein "set -x" in das Skript, damit man sehen kann, wo es genau hapert. Vermutlich möchte eines der Programme irgendwelche Umgebungsvariablen (z.B. HOME, USER, LOGNAME) sehen, die beim Aufruf aus der callerid.conf nicht gesetzt sind. Das kannst Du mit "env -i ipsend" testen - dann bekommt das ipsend gar keine Umgebungsvariablen.
Sorry, hat ein paar Tage gedauert, da ich den betreffenden Rechner hier nicht vor Ort habe. Also 'env -i ipsend' geht. set -x gesetzt und: ---/var/log/messages--- Jun 12 23:20:41 work isdnlog: + ping -c 1 www.ralfstecker.de Jun 12 23:20:41 work isdnlog: + sleep 15 Jun 12 23:20:56 work isdnlog: + test -e /var/run/proftpd.pid Jun 12 23:20:56 work isdnlog: + /usr/sbin/rcproftpd start Jun 12 23:20:56 work isdnlog: + sleep 15 Jun 12 23:20:56 work proftpd[21849]: work.rsdata-edv.priv - listen() failed in inet_listen(): Bad file descriptor (... Rest IP Auswertung & aufladen der html Seite -> alles i.O. ...) ---/var/log/messages--- Ich habe noch diverse Optionen für die callerid.conf flags probiert, wie hier in den letzten Tagen diskutiert, aber es nützt alles nichts der Fehler vom proftpd bleibt :(. Vor diesem Hintergrund, - bei mir läuft das ganze tadellos - bei ihm läuft das script vom promt gestartet tadellos - aus der callerid.conf läuft es nicht verstehe ich die Geschichte nicht mehr. Da mein Bekannter bald in Urlaub fährt, werde ich, wenn ich bis dahin keinen anderen Ansatz gefunden habe, mir wohl seinen Rechner leihen und den auf links ziehen ... wäre doch gelacht ;). Wie auch immer, Danke. -- :wq-y Maik
participants (2)
-
Maik Holtkamp
-
Michael Mauch