PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SCREEN + RCON?! geht das


[CCCB]m0p
17.04.05, 12:17
hi,
ich wollte mal fragen ob es möglich ist mit einem Crontab z.B. stündlich eine 'Console'nausgabe in Q3, welches mit screen gestartet ist zu erzeugen...

ich habe schon folgendes probiert:

screen -X -S QUAKE echo "/rcon say Hallo", scheint aber nicht zu gehen :(
hätte wer vlt ein tipp?

Fisch.666
17.04.05, 16:25
Hi!

In der Serverkonsole brauchst Du keine rcon zu benutzen, das ist nur dafür da das Clients Befehle in der Serverkonsole ausführen können. Ob bzw. die das geht, keine Ahnung...

[CCCB]m0p
17.04.05, 19:21
habe es schon auf verschiedenen wegen probiert geht alles nicht ;/ :ugly:

rudi_m
17.04.05, 19:26
Also ich verwende einfach einen externen rcon-console-client fuer meine bash scripts.

Ich habe den aus den xqf-sourcen genommen und so angepasst dass er keine console oeffnet sondern so (in der bash) aufgerufen wird:
> rcon $IP $PORT $PWD $COMMANDO

Falls Das jemand haben will, kann ichs ihm schicken.
Oder kennt jemand noch andere console rcon clients (die funktionieren)?

Meilenstein
18.04.05, 10:19
screen -X -S QUAKE echo "/rcon say Hallo"

Meiner Meinung nach kann das so auch nicht funktionieren weil...

per Screen rufst Du ja die "alte Session" auf in der Du den Server gestartest hast.
und dann versuchst Du einen Befehl auszuführen während der Server noch läuft.
Du kannst ja auch nicht in der Console etwas eingeben nachdem Du ein Programm gestartet hast und es noch läuft

So wie mein Vorredner gesagt hast wirst Du um rcon Clients nicht rumkommen, xqf ist denk ich ein recht guter Ansatz.

Wenn Du aber zB regelmässig immer ähnliche Meldungen am Server ausgeben willst... such doch mal irgend nen Plugin für Quake das dir das automatisch ausführt, gab zumindest für Counterstrike Server zB das AdminMod ... denk sowas gibts bestimmt für Quake auch

oemet
18.04.05, 11:34
screen -X -S QUAKE echo "/rcon say Hallo"

also wie fisch schon gesagt hatte : du brauchst doch kein rcon, wenn du das direckt in der console eingibst.
darum würd ichs mal so probieren :

screen -X -S QUAKE echo "say Hallo"
oder halt
screen -X -S QUAKE echo "/say Hallo"

kA ob quake den slash braucht.

mfg

oemet

rudi_m
18.04.05, 13:01
also wie fisch schon gesagt hatte : du brauchst doch kein rcon, wenn du das direckt in der console eingibst.
darum würd ichs mal so probieren :

screen -X -S QUAKE echo "say Hallo"
oder halt
screen -X -S QUAKE echo "/say Hallo"


Es liegt nicht nur am ueberfluessigen rcon.
"echo" blendet "say Hallo" kurz in der session console ein (wenn man sie dabei mit "screen -x -S QUAKE" beobachtet) es wird aber nicht als befehl reingeschrieben.

Man kann das leicht mal mit einer normalen bash testen:

$ screen -dmS testsession bash

Dann kann man diese wieder hervorholen mit

$ screen -S testsession -x

und z.B
$ beep
eingeben.
Session mit ctrl-a D verlassen

$ screen -S testsession -X echo "beep"

$ screen -S testsession -X exec echo "beep"

klappt aber beides nicht. Der letzte Befehl schreibt zwar "beep" fest in die testsession bash wir aber nicht als command ausgefuehrt.

Irgendwas muss man anders machen, weiss aber auch noch nicht was. :confused:

Olli1209
18.04.05, 22:05
Probiers mal so:

echo "test123" > befehl
screen -X -S QUAKE readbuf befehl
screen -X -S QUAKE paste .

Den Punkt hinter paste nicht vergessen! Und das ganze funktioniert glaube ich nur,
wenn der quake screen vorher einmal attached war.

rudi_m
19.04.05, 15:03
Schoen das scheint zu klappen, auch mit quake3 based servern und anderen progs:)

Ich hatte das Problem auch in einer anderen Mailingliste geposted und poste es hier nochmal als Zusammenfassung (zu dem Problem, dass man einmal vorher reattachen muss siehe Anm.3:


"Commandos an screen session senden:"

Du kannst es z.B mit dem mysql clienten oder auch mit "top" probieren.

$ screen -dmS test top

(am besten im 2ten xterm beobachten: screen -drS test -x)

$ echo "u" > befehl
$ screen -X -S test readbuf befehl
$ screen -X -S test paste .
$ echo $USER > befehl
$ screen -X -S test readbuf befehl
$ screen -X -S test paste .

Du hast also top auf dem test-screen mitgeteilt nur die Prozesse von $USER"
anzuzeigen.

Anm.1
Ganz klar ist mir noch nicht wann und warum readbuf ein <RETURN> am
Zeilenende anfuegt. Bei "u" in top waere ein <RETURN> am Ende ja sogar
falsch, funktioniert aber trotzdem komischerweise obwohl screen sagt
"Slurped 2 characters into buffer" (also ist wohl ein linfeed dazugekommen)

Anm.2
Den Umweg ueber die textdatei "befehl" kann man sich sicher irgendwie sparen
wenn man etwas mehr Ahnung von bash hat als ich;)
Wahrscheinlich mit EOF ... irgendwas

Anm.3
Das ganze klappt so nur wenn man die screesession einmal vorher reattached
hatte oder man muss z.B
$ screen -X -S test -p 0 readbuf befehl
verwenden

Auf jedenfall ist die Sache recht interessant.
Man kann es gebrauchen, um gameserver zu administrieren (ohne rcon).
Aber man koennte sicher auch z.B irgendwelche Ablaeufe von Programmen, die
auf Texteingaben warten, automatisieren (vielleicht klappts sogar mit
ncurses Programmen oder mit Programmen die auf interaktive Passworteingaben
warten etc...

[CCCB]m0p
20.04.05, 16:05
soviel resonanz und ich nicht geguggt^^ danke euch für all die konstruktiven beiträge. ich werde mich gleich mal ransetzten und die lösungsansätze durchprobieren :]