ubuntuusers.de

Befehl an 'screen' Konsole schicken

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

Fr33man

Avatar von Fr33man

Anmeldungsdatum:
18. November 2006

Beiträge: 108

Wohnort: Raum Bamberg

Hallo,

Ich habe im Wiki und auch per Google (so weit man es denn benutzen konnte; dank T-offline) nichts passendes Gefunden. Und selbst in der man-page hab ich nichts gefunden, obwohl ich zugeben muss, dass ich die nur grob überflogen habe, da die ja verdammt lang ist.

Ich würde gerne von einer "nicht-screen" Konsole einen Befehl an eine Screen Konsole senden, ohne erst mit dieser zu "Attachen". Also quasi mit diesem (Fiktivem) Befehl:

screen -r css -exec "say irgendein text"

Der ein oder andere merkt es vielleicht. Ich möchte, ohne Plugins auf dem CSS-Server installieren zu müssen, über ein script alle paar Minuten etwas per Console-say an den CSS-Server in der Screen Konsole "css" schicken. Jetzt ist nur die Frage, ob das geht. Weis das jemand?

sannny

Anmeldungsdatum:
4. Juni 2006

Beiträge: Zähle...

Hi,

ich glaube das mit dem Screen geht nicht so einfach. Aber ich hab dir da was schnell zusammen gehackt (yup, mir war langweilig):

#! /usr/bin/perl -w
use strict;
use IO::Socket::INET;

my $server = shift;
my $port   = shift;
my $pass   = shift;
my $cmd    = shift;

my $package_id = 0;

sub create_package {
    $package_id++;
    my $data = pack("VV", $package_id, $_[0]).$_[1].chr(0).chr(0);
    return pack("V", length($data)).$data;
}

my $socket = new IO::Socket::INET->new(PeerPort => $port, Proto => 'tcp', PeerAddr => $server);
$socket or die "Error: $!";

print $socket create_package(3, $pass);
print $socket create_package(2, $cmd);

close $socket;

Kopier den Code in eine Datei - Name egal ... z.B. "rcon.pl" - und mach die Datei ausfuehrbar mit "chmod +x rcon.pl"
Handhabe: ./rcon.pl server port rconpw command
also z.b.

./rcon.pl 123.123.123.123 27015 s3cr3t "say lol rofl lol"

Ich hoff es funktioniert. Ich habs net grossartig getestet 😀

Greets, Sannny

Fr33man

(Themenstarter)
Avatar von Fr33man

Anmeldungsdatum:
18. November 2006

Beiträge: 108

Wohnort: Raum Bamberg

Hi, Wow.. Danke!
Ich kenn mich mit Pearl jetzt net so gut aus (eher garnet) aber so beim groben durchsehen fällt mir 1 was auf: Es gibt nirgends den Befehl "rcon_password" mit dem man sich normalerweise am CSS Server als Admin Anmeldet. Heist dann soviel wie; Ich/Man müsste in den Startparametern

./rcon.pl 127.0.0.1 27015 "rcon_password geheim" "say lol rofl lol"

schreiben wenn man den Befehl nicht mit ins Script einbauen würde. Ist zwar kein Großes Problem aber wollte es nur mal anmerken 😉

Und dann noch eine Frage: Meine Server Daten ändern sich ja auch nicht wöchentlich, daher würde ich die gerne im Script selber festhalten. Würde das dann so passen?:

#! /usr/bin/perl -w
use strict;
use IO::Socket::INET;

my $server = "127.0.0.1";
my $port   = "27015";
my $pass   = "rcon_password geheim";
my $cmd    = shift;

my $package_id = 0;

sub create_package {
    $package_id++;
    my $data = pack("VV", $package_id, $_[0]).$_[1].chr(0).chr(0);
    return pack("V", length($data)).$data;
}

my $socket = new IO::Socket::INET->new(PeerPort => $port, Proto => 'tcp', PeerAddr => $server);
$socket or die "Error: $!";

print $socket create_package(3, $pass);
print $socket create_package(2, $cmd);

close $socket;

Und nochmal Danke für die Mühe 😀

audax

Avatar von audax

Anmeldungsdatum:
15. September 2006

Beiträge: 1253

probiers doch aus...

Fr33man

(Themenstarter)
Avatar von Fr33man

Anmeldungsdatum:
18. November 2006

Beiträge: 108

Wohnort: Raum Bamberg

lol.. wie du halt Recht hast 😳 🤣

:edit: Jo also es geht 😀 Allerdings braucht man das "rcon_password" garnet mitschicken. Das Passwort alleine tuts auch.. (dachte man bräuchte es)
Also nochmal danke an Sannny 😠

sannny

Anmeldungsdatum:
4. Juni 2006

Beiträge: 20

Nein, dass Passwort alleine reicht nicht ganz. In der Zeile

print $socket create_package(3, $pass);

steht die "3" fuer die RCON-Authentifizierung. In der naechsten Zeile

print $socket create_package(2, $cmd);

steht die "2" dafuer, dass nun ein kommando kommt.

MfG, Sannny

Fr33man

(Themenstarter)
Avatar von Fr33man

Anmeldungsdatum:
18. November 2006

Beiträge: 108

Wohnort: Raum Bamberg

Ah. Achso. Also braucht man es zumindest nicht Ausgeschrieben mitschicken. Ich nehm an, das die Ziffer direkt vom CSS-Server interpretiert wird? (sowas wie ne API)
Gibts da irgendwo eine liste in der die Kommunikationsbefehle Aufgelistet und genauer Beschrieben sind?

Antworten |