• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Modememulator für Linux gesucht

A

Anonymous

Gast
Hallo,

ich suche eine Möglichkeit unter Linux ein Modem zu emulieren welches folgende AT Befehle beherrschen soll:

AT returns OK

ATA returns CONNECT

ATD<number> returns CONNECT

Danke für eure Hilfe

Achja mein BS ist Suse Linux 10.1
 

tomm.fa

Administrator
Teammitglied
In wie vielen und welchen Foren wurde die Frage noch gestellt? Wo sind die Links dazu?
 

TomcatMJ

Guru
Hm, genau genommen müsste man sich da wohl nur ein permanent laufendes Script basteln was über eine als Device angegebene Named Pipe einkommende Befehle auswertet und die Antworten auf dieselbe Pipe weider zurückschickt. Unter dem Stcihwort Named Pipe in Kombination mit Shellscripting dürfte sich da doch was als Beispielscript finden lassen. Muss dann nur entsprechend den individuellen Anforderungen an die entsprechenden AT-Befehle mit vordefinierten Antworten angepast werden.

Bis denne,
Tom.
 
OP
A

Anonymous

Gast
@Tomcat


Komme auch aus Kölle

Könntest Du mir bitte ein Beispiel posten?

Da ich noch blutiger Linuxanfänger bin.

Danke

;)
 

TomcatMJ

Guru
Hi!
Also erstmal muss man per
Code:
mkfifo --mode=666 /home/user/meinpseudodevice
eine namend Pipe (auch bekannt als FIFO=First IN First Out) im Dateisystem anlegen mit einem Mode der sie auch beschreiben statt nur lesen lässt. In diesem Falle für alle beschreib+lesbar da ja noch niemand sagte welche Usergruppe oder welcher User da schreiben können sollte also hier im Beispiel mal für alle nutzbar.
Danach nutzt man diese named Pipe eben zum Beispüiel als Device im Terminalprogramm nach Wahl udn auf der anderen seite in einem Script als Einbagequlle udn Ausgabequelle
Beispiel für eine einmalige Auswertung:
Script, hier mal meinscript.sh genannt:
Code:
#!/usr/bin/bash
if [ $@=AT then echo "ok" >/home/user/meinpseudodevice
else echo "Das war kein AT-Befehl sondern irgendwas anderes" >/home/user/meinpseudodevice
fi
Ich bin allerdings kein Progger und bin mir nicht sichwer ob $Q nun doch gleich die Variable für alle Eingaben über Standard-In War oder obs eine andere war, $1 $" usw. waren jedenfalls die Platzhalter für einzelteile von Parameterketten die man per Stanrad-In an ein Script beim Aufruf übergeben kann. In diesem Falle nun muss man nur die Eingabe vom Pseudodevce aka der named Pipe beim Aufruf des Script umbiegen, wie im folgenden Aufruf des obigen Scripts zu sehen wäre:
Code:
meinscript.sh </home/user/meinpseudodevice
Naja,als Ansatz sollte man damit zumindest schonmal weiterkommen denke ich (Scripte bastel ich als Netzwerker eben nur bei Bedarf und dann eigentlich auch nur so kleinere Hilfsdinger*g*)

Bis denne,
Tom
 

marce

Guru
http://www.linuxforen.de/forums/showthread.php?t=260487
http://www.linux-forum.de/modememulator-fuer-suse-10-1-gesucht-25135.html
 
OP
A

Anonymous

Gast
Ach du Sch** das sagt mir jetz garnix :irre:

Ich hab noch folgendes gefunden Wie richte ich das unter SUSE 10.1 ein?


Dazu gibt es (zumindest bei SuSE-Distributionen) die Devices <b>ttyI0 .. ttyI15</b>, die eine "Serielle" schnittstelle zum i4l bieten. Wenn Du ein terminalprogramm (minicom) startest und im setup /dev/ttyI0 als modem angibst, kannst du ganz "normal" hayes-kommandos abgeben und so mit deiner Karte "reden".
 

TomcatMJ

Guru
Das aus deinem geposteten Zitat (was du per Quote-Tags mal als solches kenntlich machen solltest) bezieht sich auf die Terminals einer ISDN-Karteninstallation per isdn4linux. Hat also nix mit einem Modememulator als Script zu tun sondern sind Schnittsellen der isdn4linux API wo du direkt mit der ISDN-Karte kommunizierst. Abgesehen vom Multiposting das du voerher nicht erwähntest (blöder Stil sowas nicht zu erwähnen was meist in Verwirrungen beim Lösungsweg ausartet) wäre es vielleicht mal nicht verkehrt wenn du überhaupt erstmal nun sagst was du mit einem Modememulator willst. Eine Software testen?Da wäre das Beispiel oben für zu gebrauchen. Wenn du jedoch ein reales gerät ansprechen willst brauchst du keinen Modememulator sondern einen Treiber für das entsprechende Gerät der dir vielleicht eine Modememulation auf HARDWARESEITE zugänglich macht. Nur, ohne weitere Infos artet das Ganze im Stochern im dunkeln aus und das bringt so nun nix,daher bite erstmal das Einsatzgebiet definieren damit dir da noch weitergeholfen werden kann.

Bis denne,
Tom
 
OP
A

Anonymous

Gast
Hallo

Im Prinzip suche ich eine Modematrappe für Linux die alle AT bzw. Hayaskommandos unterstüzt.

Kurzum

eine alternative zu diesem treiber vom ms für linux

msdn.microsoft.com/en-us/library/dd163315.aspx
 

TomcatMJ

Guru
Dann suchst du also keinen Modememulator sondern einen Treiber für Winmodems/Softmodems wenn ichd as richtig verstanden habe? Das ist eine ganz andere Baustelle. Da fallen mir auf Anhieb nur die alten Smartlink und Linuxant Treiber ein. Die müssten bei dir über YaST von der DVD zu laden sein,denn online weiss ich nun nicht ob für deine absolut veraltete opensuse Version überhaupt das oss und das non-oss Repo überhaupt noch erreichbar ist da diese Version von opensuse die du da nutzt schon seit anno Piefendeckel aus dem Support raus ist.

Bis denne,
Tom
[Edit]P.S.:Falls ich das nun wieder missverstanden haben sollte könnte es daran liegen daß du immer noch nicht gepostet hast wofür du das nun zu benötigen gedenkst, denn du hattest noch nicht gepostet was der beabsichtige Einsatzbereich war sondern nur was du denkst was du brauchst...daher hatte ich nun einfach mal etwas herumgeraten*g*[/EDIT]
[Edit2]Ach,übrigens: Es gibt nicht "DEN AT-Befehlssatz da jeder Modemhersteller seine eigenen Erweiterungen eingebaut hat die teilweise auf die gleichen Parameter was ganz anderes bewirken können...welches Modem solls denn emulieren? Bei obigem Beispielscript kannst du als Antworten ja jeweils eine passende IF-Abfrage oder besser noch ein Case Muster einbauen um das gewünschte ergebnis zu erhalten,musst eben nur dafür sorgem daß das Script dann in einer Schleife läuft bis z.b. ein ATZ oder ein +++ATH auftaucht (letzteres war der ZWangs-HangUp Code für alle Hayes kompatiblen Modems)[/Edit2]
 
OP
A

Anonymous

Gast
Hallo

Ja ich suche eine Modematrappe bzw. ein virtuelles Modem für Linux.

Das Modem soll diese AT Befehle mit OK bzw. CONNECT beantworten.

AT returns OK

ATA returns CONNECT

ATD<number> returns CONNECT

Gibs denn kein Standartmodem oder sowas für Linux welches man unabhängig ob man ein echtes modem am rechner hat instaliert werden kann und welches die AT Befehkle unterstüzt die ich oben gepostet habe?
 

TomcatMJ

Guru
Virtueloe Terminaldevices hast du doch schon, beispielsweise /dev/tty11 und /dev/tty12 wo du per Strg-Alt-F11 bzw. Strg-Alt-F12 drauf umschalten kannst um dir anzusehen was dort ankommt und wo du per Strg-Alt-F7 wieder zum X-Server zurückkommst, nur antworten die eben nicht. Dafür kannst du dann eben dort selbst nachsehen was ankam. für alles andere baut man sich ein Script über die named Pipes. Nur: Wozu sollte man sowas bitte brauchen außer zum Softwareentwickeln?? Es fehlt immer noch der beabsichtigte Einsatzbereich um dir da endlich mal was konkreteres zu sagen zu können! Was willst du also damit veranstalten daß du sowas brauchst? Ohne die Info kann man dir eben nicht wirklich weiterhelfen....ergo gibst du entweder mal die Info raus oder probierst es einfach m,al mit dem Beispielscript...mehr geht ohne weitere Infos einfach nicht.Punkt.

Bis denne,
Tom
P.S.:Woher sollen wir hier wissen auf welche Art dein Modem da herumstehen soll? Auf eine Standardart oder auf eine andere?*scnr*
 
OP
A

Anonymous

Gast
Hallo

ich möchte damit bestimmte sachen austesten.

Unter anderem ein Terminalprogramm

Kannst Du mir nochmals genau beschreiben wie ich das virtuelle modem jetzt unter SUSElinux einrichten muss?

Danke

Und es soll im Terminalproggi auf AT mit OK auf atdt 0191011 mit connect antworten usw..

Achja

Und kannst Du mir sagen wie ich das ganze in der Konsole einrichte?
 

TomcatMJ

Guru
Wie man eine named Pipe/ein FIFO einrichtet Steht alles schonn oben beim Script. Nur wenn du weitere Befehle da als zu beantworten drinstehen hast dann solltest du eben vor dem else ein elif reinsetzen mit der weiteren zu testenden Bedingung:
Code:
    #!/usr/bin/bash
    if [ $@=AT then echo "OK" >/home/user/meinpseudodevice
    elif [ $@="ATDT 0191011 " echo "CONNECT" >/home/user/meinpseudodevice
    else echo "Das war keine der Bedingungen sondern irgendwas anderes" >/home/user/meinpseudodevice
    fi

Bis denne,
Tom
 
OP
A

Anonymous

Gast
KannstDu mal Screens posten wie ich das ganze mit SUSE 10.1 einrichte?
Oder mir den Code kompilieren und mir das so einzurichten das ich damit jede nummer per atdt wählen kann und er immer mit CONNECT antwortet?
Danke
 

TomcatMJ

Guru
Nein da ich a.) selbst keinen Bedarf für Fifos habe, b.) das Ganze in der Kommandozeile aka Shell auszuführen ist und da Screenshots Unfug wären und c.) der Quellcode des Scripts ja da schon steht genauso wie die Befehle die man eingeben muss in der Shell um das Script zu starten. Es wartet einfach bis ein Enter am Ende kommt und die Zeile dann als EIngabe anzunehmen,willst du es öfter als einmal aufrufen dann solltest du es eben einfach oft genug hintereinander aufrufen oder eben in einem weiteren Script in einer endlosschleife aufrufen bis Strg-C zum Abbruch gedrückt wurde, am besten mit einem Sleep Befehl damit du Zeit genug hast das Script mit der Schleife auch zu unterbrechen.
Wie gesagt,ich bin kein Progger und habe auch nicht vor einer zu werden,das Script oben war mal eben kurz aus Theoretischen Überlegungen in Kombination mit normalen Shellfunktionen entsanden,umfangreicheres musst du dr da schon selbst bauen....oder nen Progger fragen ob ers dir bastelt (vermutlich wird dann nur die Frage kommen"Wieviel bietest du dafür wenn du schon keine Lust hast selbst durch einfach mal machen und Doku zu lesen zu lernen?")....

Bis denne,
Tom
[Edit]P.S.:paar kleine Hints zum Thema Doku: siehe "man bash" udn "man test" denn [ ist ein Shortalias für den Befehl test...[/Edit] http://www.linupedia.org/opensuse/Shell
 
OP
A

Anonymous

Gast
d.h. was muss ich jetzt genau in die Konsole eintippen?

Und wie kann ich dann mit atdt jede nummer wählen die er mit dann immer mit connect beantworten soll?
 

TomcatMJ

Guru
Mach einen x-beliebigen Texteditor, z.B. kwrite auf, kopier dir das Script da rein und speicher es unter dem Namen unter dem du es aufrufen willst. Dann machst du eine Konsole auf, tippst den Befehl zum erstellen einer named Pipe den ich oben bereits schrieb dort rein udn rufe dein Script genau so auf wie ich es oben bereits schrieb,aber inklusive der Pfadangabe. Wenn du also in dem Pfad bist in dem du es gespeicher hast mit
Code:
sh ./meinscript.sh </home/user/meinpseudodevice
oder du machst es mit
Code:
chmod +x meinscript.sh
vorher noch direkt ausführbar,dann reicht
Code:
./meinscript.sh </home/user/meinpseudodevice
Um nun zu erreichen daß auf jede Nummer ein "Connect" gemeldet wird solltest du die zweite Bedingung noch von
Code:
¼@="ATDT 0191011"
auf
Code:
$!=ATDT
ändern damit nur der erste Teil ausgewertet wird unabhängig sonstiger folgender Teile (die ja durch das Leerzeichen voneinander abgetrennt wären).

Bis denne,
Tom
 
Oben