Mirar
Mitglied
Hallo liebe Forumfreunde,
ich bin aktuell mit einem Projekt für die Schule beschäftigt und komme einfach nicht weiter.
Die Aufgabe ist, die Konsole eines anderen Rechners im gleichen Netzwerk zu steuern und die Ausgabe auf dem Client zu sehen. Dafür müssen wir Sockets nutzen.
Soweit funktioniert auch schon das meiste. Ich kann die Verbindung herstellen, einen Befehl wie z.B. "ipconfig" in der Client-Konsole eingeben und dieser wird dann auf dem Server/Remote-Rechner ausgeführt und die Ausgabe zurück zum Client geschickt.
Jetzt ist das Programm so geschrieben (Oder soll so geschrieben sein), dass man nachdem man einen Befehl eingegeben hat noch weitere Befehle eingeben kann. Halt als würde man tatsächlich die andere Konsole vor Augen haben. Allerdings wird nach dem ersten Befehl kein weiterer Befehl mehr ausgeführt. Eintippen ist ok. Ausführen nein. Könnte ihr mir da helfen?
Hier mein Code:
Server:
Und der Client:
Danke im Voraus!
Gruß Mirar
ich bin aktuell mit einem Projekt für die Schule beschäftigt und komme einfach nicht weiter.
Die Aufgabe ist, die Konsole eines anderen Rechners im gleichen Netzwerk zu steuern und die Ausgabe auf dem Client zu sehen. Dafür müssen wir Sockets nutzen.
Soweit funktioniert auch schon das meiste. Ich kann die Verbindung herstellen, einen Befehl wie z.B. "ipconfig" in der Client-Konsole eingeben und dieser wird dann auf dem Server/Remote-Rechner ausgeführt und die Ausgabe zurück zum Client geschickt.
Jetzt ist das Programm so geschrieben (Oder soll so geschrieben sein), dass man nachdem man einen Befehl eingegeben hat noch weitere Befehle eingeben kann. Halt als würde man tatsächlich die andere Konsole vor Augen haben. Allerdings wird nach dem ersten Befehl kein weiterer Befehl mehr ausgeführt. Eintippen ist ok. Ausführen nein. Könnte ihr mir da helfen?
Hier mein Code:
Server:
Perl:
#!/usr/bin/perl -w
use strict;
use IO::Socket;
print "Geben Sie den Port an...\n";
chomp(my $port = <STDIN>);
my $server = IO::Socket::INET->new(
LocalPort => $port,
Type => SOCK_STREAM,
ReuseAddr => 1,
Listen => 10 )
or die "Couldn't be a tcp server on port $port : $@\n";
print "Server started\n";
while(1) {
while (my $client = $server->accept( ))
{
my $line = <$client>."\n";
my $output = qx($line);
print $client $output."\n";
}
}
Und der Client:
Perl:
#!/usr/bin/perl -w
use strict;
use IO::Socket;
print "Geben Sie die IP des Servers an...\n";
chomp(my $ip = <STDIN>);
print "Geben Sie den Port an...\n";
chomp(my $port = <STDIN>);
my $socket = IO::Socket::INET->new(
PeerAddr => $ip,
PeerPort => $port,
Proto => "tcp",
Type => SOCK_STREAM)
or die "Couldn't connect to $ip:$port : $@\nPlease check that the IP and the Port are correct!";
print "Connection was build\n";
print "Sie können nun die Befehle eingeben!\n";
my $command;
while(1) {
$command = <STDIN>;
print $socket $command;
while(my $answer = <$socket>)
{
print $answer;
}
}
Danke im Voraus!
Gruß Mirar