telnet funktioniert nicht mehr

  • hallo, ich habe ein shell-script was auf dem TS eine nachricht broadcastet, jetzt ist mir aufgefallen dass das gar nicht mehr geht... wurde da was geändert oder wieso ?? am script hab ich nix gemacht. hier mal das script :


    Code
    1. telnet localhost 10011 <<EOF
    2. login serveradmin PASSWORT
    3. gm msg=NACHRICHT
    4. quit
    5. EOF
  • Am Script selbst sehe ich keine Fehler, aber hast du schon mal überprüft, ob du alles manuel ausführen kannst?


    Stimmt der Login noch, oder ist er vllt. ungütltig?


    Hast du mehrere Serverinstanzen laufen? Dann vorher noch den passenden Server mit "use port=deinport" auswählen.


    Mehr fällt mir leider auch nicht mehr ein.

  • Hallo,
    dein Skript sieht in Ordnung aus.


    Das Problem an deinem Skript ist jedoch, dass es da vorkommen kann, dass der ein oder andere Befehl zu schnell bei telnet eingekippt wird, bevor der vorherige überhaupt erfolgreich war und schlägt das ganze Skript fehl.


    Ich persönlich bin daher der Fan von expect. expect erwartet immer einen gewissen String und sendet dann den definierten String, dann wartet es wieder auf einen gewissen String und sendet wieder ein usw..


    Beispiel: sende_globale_nachricht.sh


    Ein paar weitere Beispiele in Verbindung mit TeamSpeak, findest du in meinem TS3UpdateScript. Suche hier einfach nach "spawn telnet". :)


    Siehe auch hier: Programme fernsteuern mit expect

  • Stelle bitte sicher, dass du keine Leerzeichen, sondern Tabs verwendest, ansonsten muckt expect da sehr rum. ;)


    Sollte so aussehen:

    Ein roter Pfeil bedeutet einmal Tab.


    Code
    1. $ ./test.sh spawn telnet 127.0.0.1 10011Trying 127.0.0.1...Connected to 127.0.0.1.Escape character is '^]'.TS3Welcome to the TeamSpeak 3 ServerQuery interface, type "help" for a list of commands and "help <command>" for information on a specific command.login serveradmin sehrGeheimerror id=0 msg=okgm msg=Testerror id=0 msg=ok


    Die Ausgabe des Textes kannst du dann auch noch weiterverarbeiten oder verwerfen, wenn du willst. Hänge hierzu hinter ) | expect einfach die relevanten Parameter. Beispielsweise so:
    Alles verwerfen:

    Code
    1. ) | expect 2&1> /dev/null


    Error ID ausgeben:

    Code
    1. ) | expect | tail -1 | grep -Eo "error id=[0-9]+" | grep -Eo "[0-9]+"
  • will immer noch nicht :


  • würde das passwort falsch sein würdest du nicht die bestätigungs meldung bekommen

    Code
    1. error id=0 msg=ok


    ebenfalls für den "gm" command bekommst du ein okay, würde jetzt empfehlen einen Bug Report im offiziellen TeamSpeak Forum zu posten