QuietGuy | vrijdag 18 juni 2004 @ 16:33 |
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  |
rihago | vrijdag 18 juni 2004 @ 16:35 |
ik heb zoiets wel eens geschreven in PHP...
php kan namelijk ook heel goed met sockets overwegquote:#!/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 |
QuietGuy | vrijdag 18 juni 2004 @ 16:36 |
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! |
QuietGuy | vrijdag 18 juni 2004 @ 16:36 |
quote:Op vrijdag 18 juni 2004 16:35 schreef rihago het volgende: (ff linkie zoeken van voorbeeld) Zou lief zijn  |
Arjan | vrijdag 18 juni 2004 @ 16:36 |
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). |
Ra-z | vrijdag 18 juni 2004 @ 16:37 |
http://www.troubleshooters.com/codecorn/sockets/  |
lordhelmet | vrijdag 18 juni 2004 @ 16:40 |
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/ |
RiDo78 | vrijdag 18 juni 2004 @ 16:42 |
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. |
QuietGuy | vrijdag 18 juni 2004 @ 16:49 |
Shellscript:quote:#!/usr/bin/php4 -q <?php echo "test"; ?> Dat ik dat niet zelf kon bedenken |
QuietGuy | vrijdag 18 juni 2004 @ 17:05 |
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); ?> |
Hiawatha | vrijdag 18 juni 2004 @ 17:07 |
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. |
QuietGuy | vrijdag 18 juni 2004 @ 17:09 |
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 |
NightWhistler | vrijdag 18 juni 2004 @ 17:16 |
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" |
RiDo78 | vrijdag 18 juni 2004 @ 17:29 |
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 ;-) |
rihago | maandag 21 juni 2004 @ 09:07 |
http://nanoweb.si.kz/
ook wel een leuk progje... een webserver geschreven in php |