Schrift
[thread]6139[/thread]

Eintrag finden und löschen: ist wichtig (Seite 2)



<< |< 1 2 >| >> 17 Einträge, 2 Seiten
coax
 2004-03-30 10:58
#80970 #80970
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
[quote=Rooty,14.03.2004, 01:33]
so und wie kann ich jetzt die ausgabe vom befehl kopieren
so das er die ID automatisch in den nächsten befehl integriert:
[/quote]

Wenn du lokalen Zugriff darauf hast (scheint mir fast so da deine erste Methode darin besteht die server.dbs zuveraendern) eroeffnest du mit IPC::Open2 eine bidirektionale Kommunikation mit deinen "telnetaehnlichen Programm". Das Lesen und Schreiben funktioniert dann wie bei einer Datei (ueber print, <>, etc.).

Bist du aber gezwungen Telnet zu nutzen, dann nimm (wie strat schon schrieb) Net::Telnet.
Damit bekommst du die Ausgabe deines Befehls in etwa so
Code: (dl )
@ausgabe = $telnet->cmd("befehl");

dann setzt den ausgelesenen Wert in naechsten cmd()-Aufruf ein.

Wenn deine server.dbs-Datei nach einen dir bekannten festen Schema aufgebaut und nicht all zu kompliziert ist, wuerde ich lieber die Datei direkt veraendern.

Grusz Christian.
,,Das perlt aber heute wieder...'' -- Dittsche
Rooty
 2004-03-30 19:41
#80971 #80971
User since
2004-03-14
27 Artikel
BenutzerIn
[Homepage] [default_avatar]
Sag wir so ich kenn mich mit perl noch nicht so gutaus.

Ich hab das mal so geschrieben:

Code: (dl )
1
2
3
.........
print $sock qq(slogin $login $password\n);
print $sock qq(dbuserid Satan); <--- Dieser Befehl gibt die userid (2233) aus

Code: (dl )
print $sock qq(kick 2233 ); <-- die id ist dynamisch

wie mach ich das jetzt das er mir die id in den kickbefehl übernimmt weil die userid ändert sich laufend.


Zur info das mit der Datenbank ist ne sqlite datenbank
Ronnie
 2004-03-30 19:51
#80972 #80972
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Wenn ich dein Problem richtig verstanden habe so:
Code: (dl )
1
2
my $gadfly = $sock qq(dbuserid Satan);
print $sock qq(kick $gadfly);

Gruss,
Ronnie
coax
 2004-03-31 06:14
#80973 #80973
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
[quote=Ronnie,30.03.2004, 17:51]
Code: (dl )
1
2
my $gadfly = $sock qq(dbuserid Satan);
print $sock qq(kick $gadfly);
[/quote]
Quote
syntax error at (...), near "$sock qq(dbuserid Satan)"
Execution of (...) aborted due to compilation errors.


Lesen solltest du mit <$sock>.
Code: (dl )
1
2
3
4
5
6
7
8
9
print $sock qq(slogin $login $password\n);  # >>> slogin LOGIN PASSWORD

print $sock qq(dbuserid Satan\n);           # >>> dbuserid USER

my $uid =  <$sock>;                         # <<< ID

chomp($uid);

print $sock qq(kick $uid\n);                # >>> kick ID


Wenn der Server nach "slogin login password" noch eine Bestaetigung ausgibt ("OK" oder so) bekommst du natuerlich erst dieses OK als zurueck.
Dann muesstest du erst diese OK Zeile auslesen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
print $sock qq(slogin $login $password\n);  # >>> slogin LOGIN PASSWORD

print scalar <$sock>;                       # <<< OK

print $sock qq(dbuserid Satan\n);           # >>> dbuserid USER

my $uid =  <$sock>;                         # <<< ID

chomp($uid);

print $sock qq(kick $uid\n);                # >>> kick ID
,,Das perlt aber heute wieder...'' -- Dittsche
Rooty
 2004-08-06 14:49
#80974 #80974
User since
2004-03-14
27 Artikel
BenutzerIn
[Homepage] [default_avatar]
ich probier es mal genauer zu beschreiben

1. Telnetähnliche verbindung aufbauen
Code: (dl )
1
2
3
4
5
6
#!\C:\Perl\bin\perl.exe
#
#
use IO::socket;

my $sock = IO::Socket::INET->new(qq(127.0.0.1:4000));


2 Die Login-daten senden
Code: (dl )
1
2
print $sock qq(sel 8767\n);
print $sock qq(slogin superadmin *****\n);

Hilfe: sel | slogin

3. Nun möchte ich einen player aus der playerliste finden und ihm einen nachricht schicken

[ Hier brauch ich den code-teil ]

Als erstes brauch ich seine p_id
In Telnet sieht das so aus
ich tippe pl ein:
Quote
p_id    c_id    ps      bs      pr      br      pl      ping    logintime       idletime        cprivs  pprivs  pflags  ip      nick    loginname
54      44      37313   1112114 38186   4454903 20      212     38369   1228    0       0       0       "0.0.0.0"       "JACK"  "seinloginname"


Hilfe: pl

4. Nun sende ich mit dem Befehl "msgu"
Hilfe : msgu
eine nachricht an die p_id

5. In dem besispiel oben finden sie den user per befehl "fp"
Hilfe: fp

Gibt es da einen möglichkeit den user dann noch per loginname du identifizieren ?
sprich "fp unky"

>p_id  p_dbid  c_id    nickname        loginname       ip
>9114  0       1979    "FunkyFreak"    "loginname_als_sicherheit"              "80.184.142.72"
>9432  0       1848    "fresh&funky"   ""              "217.82.132.218"

Also nur wer den namen und den loginnamen hat bekommt einen nachricht.

War das soweit verständlich ?
kann mir da jemand ein script schreiben was das automatisch macht. wäre echt super. danke
Rooty
 2004-08-07 18:13
#80975 #80975
User since
2004-03-14
27 Artikel
BenutzerIn
[Homepage] [default_avatar]
hi

kann mir da jemand ein script schreiben.
wenn was unbekannt ist einfach melden
Rooty
 2004-08-11 18:31
#80976 #80976
User since
2004-03-14
27 Artikel
BenutzerIn
[Homepage] [default_avatar]
ich komm da nicht klar mit dem p_id zuweisen.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
my $player = Gast;

print $sock qq(sel 1234\n);
print $sock qq(slogin admin 12345\n);
print scalar <$sock>;

#print "Player: ";
#   chomp ($player = <STDIN>);
#   exit if $player eq "q";      

print $sock qq(fp $player\n);
#print scalar <$p_id>;
#my $p_id =  <$sock>;
#chomp($p_id);

print $sock qq(msgu $player @ Hallo User\n);


fp gibt die p_id raus schaut dazu in der hilfe
für msgu brauch ich seine p_id

wie mach ich das mit dem übernehmen der p_id\n\n

<!--EDIT|Rooty|1092236393-->
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2004-03-13 19:59.