abonnement Unibet Coolblue Bitvavo
  vrijdag 18 juni 2004 @ 16:33:16 #1
42782 QuietGuy
opscheppende pats-nerd
pi_19997137
Ik ben enigszins een n00b maar ik zou graag het volgende willen realiseren:

Een simpel scriptje of programmaatje wat ik zelf op linux aan en uit kan zetten.
Dit moet gaan luisteren op bijv. poort 4564
Als er een verbinding wordt gemaakt met die poort moet hij een definieerbare tekst antwoorden en de verbinding verbreken. bijv. dit is mijn tekst

Ik heb geprobeerd te zoeken op google maar geen idee welke trefwoorden ik moet gebruiken.
Hopelijk kan een lieve FOK!ker me uit de brand helpen
pi_19997206
ik heb zoiets wel eens geschreven in PHP...

php kan namelijk ook heel goed met sockets overweg
quote:
#!/usr/local/bin/php -q
<?php
error_reporting(E_ALL);

/* Allow the script to hang around waiting for connections. */
set_time_limit(0);

/* Turn on implicit output flushing so we see what we're getting
* as it comes in. */
ob_implicit_flush();

$address = '192.168.1.53';
$port = 10000;

if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo "socket_create() failed: reason: " . socket_strerror($sock) . "\n";
}

if (($ret = socket_bind($sock, $address, $port)) < 0) {
echo "socket_bind() failed: reason: " . socket_strerror($ret) . "\n";
}

if (($ret = socket_listen($sock, 5)) < 0) {
echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n";
}

do {
if (($msgsock = socket_accept($sock)) < 0) {
echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
break;
}
/* Send instructions. */
$msg = "\nWelcome to the PHP Test Server. \n" .
"To quit, type 'quit'. To shut down the server type 'shutdown'.\n";
socket_write($msgsock, $msg, strlen($msg));

do {
if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
echo "socket_read() failed: reason: " . socket_strerror($ret) . "\n";
break 2;
}
if (!$buf = trim($buf)) {
continue;
}
if ($buf == 'quit') {
break;
}
if ($buf == 'shutdown') {
socket_close($msgsock);
break 2;
}
$talkback = "PHP: You said '$buf'.\n";
socket_write($msgsock, $talkback, strlen($talkback));
echo "$buf\n";
} while (true);
socket_close($msgsock);
} while (true);

socket_close($sock);
?>
http://nl.php.net/sockets
In de ban van de mods.
  vrijdag 18 juni 2004 @ 16:36:23 #3
42782 QuietGuy
opscheppende pats-nerd
pi_19997218
quote:
Op vrijdag 18 juni 2004 16:35 schreef rihago het volgende:
ik heb zoiets wel eens geschreven in PHP...

php kan namelijk ook heel goed met sockets overweg
da's waar ook, PHP snap ik wel... als ik gewoon de max. execute time uitzet... tnx voor de ingeving, ga ik mee aan de slag!
  vrijdag 18 juni 2004 @ 16:36:42 #4
42782 QuietGuy
opscheppende pats-nerd
pi_19997230
quote:
Op vrijdag 18 juni 2004 16:35 schreef rihago het volgende:
(ff linkie zoeken van voorbeeld)
Zou lief zijn
pi_19997233
Volgens mij zijn er geen shell-commando's voor sockets.
Je komt dan al snel in de hoek van shell-executie van Perl-scripts (of command-line PHP).
pi_19997345
quote:
Op vrijdag 18 juni 2004 16:36 schreef Arjan het volgende:
Volgens mij zijn er geen shell-commando's voor sockets.
Je komt dan al snel in de hoek van shell-executie van Perl-scripts (of command-line PHP).
netcat! Weliswaar geen echt shell-commando, maar wel een heel handige commandline tool.

http://netcat.sourceforge.net/
pi_19997378
Ohh als dat alles is...

Je kunt met xinetd definieëren welk programma er gestart moet worden als er een verbinding op een willekeurige poort binnenkomt. Je zult dan alleen je shell-script zo gek moeten krijgen dat ie dan ook contact maakt met die poort zodra het gestart wordt... of je neemt 'finger' onder handen. Dan heb je weinig shellscript (ervaring) nodig.
Don't hurry, be crappy!
  vrijdag 18 juni 2004 @ 16:49:48 #9
42782 QuietGuy
opscheppende pats-nerd
pi_19997557
Shellscript:
quote:
#!/usr/bin/php4 -q
<?php
echo "test";
?>
Dat ik dat niet zelf kon bedenken
  vrijdag 18 juni 2004 @ 17:05:48 #10
42782 QuietGuy
opscheppende pats-nerd
pi_19997970
Het is geen mooi scriptje maar dit issum geworden:
quote:
#!/usr/bin/php4 -q
<?php
error_reporting(E_ALL);
set_time_limit(0);
$address = '127.0.0.1';
$port = 110;

if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo "socket_create() failed: reason: " . socket_strerror($sock) . "\n";
}

if (($ret = socket_bind($sock, $address, $port)) < 0) {
echo "socket_bind() failed: reason: " . socket_strerror($ret) . "\n";
}

if (($ret = socket_listen($sock, 5)) < 0) {
echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n";
}

do {
if (($msgsock = socket_accept($sock)) < 0) {
echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
break;
}

$msg="-ERR Dios, mijn mailserver is op dit moment in onderhoud\n";
socket_write($msgsock, $msg, strlen($msg));
socket_close($msgsock);
} while (true);
socket_close($sock);
?>
  vrijdag 18 juni 2004 @ 17:07:46 #11
30106 Hiawatha
Had ie nu maar een camera.....
pi_19998027
Hee QG. Ik heb een leuk zelfgemaakt progje voor je waarmee je dat kan doen. Zal het zo effe op m'n website zetten: http://projects.leisink.org/ Je moet het progje Jampot hebben.
  vrijdag 18 juni 2004 @ 17:09:06 #12
42782 QuietGuy
opscheppende pats-nerd
pi_19998065
quote:
Op vrijdag 18 juni 2004 17:07 schreef Hiawatha het volgende:
Hee QG. Ik heb een leuk zelfgemaakt progje voor je waarmee je dat kan doen. Zal het zo effe op m'n website zetten: http://projects.leisink.org/ Je moet het progje Jampot hebben.
Tnx

Ik ben er in principe al aan uit, en bedacht me net dat ik zo vééél meer simpele shell-scriptjes kan fabriceren... Nooit aan #!/usr/bin/php4 -q gedacht
  vrijdag 18 juni 2004 @ 17:16:29 #13
70876 NightWhistler
What does this button do?
pi_19998257
quote:
Op vrijdag 18 juni 2004 16:42 schreef RiDo78 het volgende:
Ohh als dat alles is...

Je kunt met xinetd definieëren welk programma er gestart moet worden als er een verbinding op een willekeurige poort binnenkomt. Je zult dan alleen je shell-script zo gek moeten krijgen dat ie dan ook contact maakt met die poort zodra het gestart wordt... of je neemt 'finger' onder handen. Dan heb je weinig shellscript (ervaring) nodig.
xinetd is een prima idee, maar het is zelfs nog makkelijker dan jij zegt. Als je een script of programma via xinetd (of standaard inetd) laat starten worden stdin en stdout van je prog geredirect naar de socket. Je script komt dan dus neer op "echo text"
pi_19998533
quote:
Op vrijdag 18 juni 2004 17:16 schreef NightWhistler het volgende:

[..]

xinetd is een prima idee, maar het is zelfs nog makkelijker dan jij zegt. Als je een script of programma via xinetd (of standaard inetd) laat starten worden stdin en stdout van je prog geredirect naar de socket. Je script komt dan dus neer op "echo text"
Kijk... weer wat geleerd ;-)
Don't hurry, be crappy!
pi_20057961
http://nanoweb.si.kz/

ook wel een leuk progje... een webserver geschreven in php
In de ban van de mods.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')