Re: CD boutable avec shell
Avec le copain de busybox 'tinylogin' tu dois pouvoir finir ton système... Arg, je n'y avais pas pensé à celui là, je vais voir Ça a l'air de marcher correctement ici (sauf que sh me dit 'command not found' pour absolument tout: doit y avoir un problème de PATH ou de LD_LIBRARY_PATH ou autre, mais il se fait trop tard pour chercher. Le pbm est exactement ça, ça n'est pas un pbm de PATH car un system(autre chose) fonctionne. En fait, le pbm vient de la redirection de stdin. * Si j'envois la commande /bin/sh sans faire la redirection de stdin, les commandes tapées en local s'exécutent bien. * Si je fais la redirection, ça s'exécute mal pour les commandes envoyées * Si je fais la redirection et que j'envois la commande cat /tmp/gre, le fichier /tmp/gre obtenu est correct... Va comprendre... Tu veux bien poster le code complet? (en privé ou sur site Web si c'est trop long) Tu as http://boisson.homeip.net/smalltelnet.c et http://boisson.homeip.net/smalltelnet-v0.c Le second est la version actuelle sans la redirection de stdin. Merci de ton intérêt :) François Boisson -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: CD boutable avec shell
On Fri, May 25, 2007 at 08:10:16AM +0200, François Boisson wrote: Le pbm est exactement ça, ça n'est pas un pbm de PATH car un system(autre chose) fonctionne. En fait, le pbm vient de la redirection de stdin. * Si j'envois la commande /bin/sh sans faire la redirection de stdin, les commandes tapées en local s'exécutent bien. * Si je fais la redirection, ça s'exécute mal pour les commandes envoyées * Si je fais la redirection et que j'envois la commande cat /tmp/gre, le fichier /tmp/gre obtenu est correct... Va comprendre... Ça devient intéressant. (c'est nul, les programmes qui marchent bien.) Tu as http://boisson.homeip.net/smalltelnet.c et http://boisson.homeip.net/smalltelnet-v0.c 404 pour les 2. Y. -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: CD boutable avec shell
Arch, au temps pour moi, c'est http://boisson.homeip.net/smalltelnetd-v1.c et http://boisson.homeip.net/smalltelnetd.c J'ai fait ça trop vite... PS: dsl pour le doublon mais je suis en remote console direct avec mail... -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: CD boutable avec shell
[EMAIL PROTECTED], vendredi 25 mai 2007, 13:18:16 CEST Arch, au temps pour moi, c'est http://boisson.homeip.net/smalltelnetd-v1.c et http://boisson.homeip.net/smalltelnetd.c J'ai fait ça trop vite... PS: dsl pour le doublon mais je suis en remote console direct avec mail... J’ai fait un petit test avec dup2. En simplifié : fd = accept(prise, (struct sockaddr*)adr_connexion, taille); dup2(fd, 0); dup2(fd, 1); dup2(fd, 2); fcntl(fd, F_SETFD, FD_CLOEXEC); execl(/bin/sh, sh, -i, NULL); et ça fonctionne... (Le fcntl permet de fermer le fd lorsque execl termine. Il faut quand même le fermer chez le père (il a été copié pour le fils).) Le tout dispo par là : http://slswww.free.fr/miniteld.c -- Sylvain Sauvage
Re: CD boutable avec shell
execl(/bin/sh, sh, -i, NULL); et ça fonctionne... (Le fcntl permet de fermer le fd lorsque execl termine. Il faut quand même le fermer chez le père (il a été copié pour le fils).) Indépendamment de ça, c'est l'option -i qui fait fonctionner le shell. Bizarre que cette option soit indispensable ici mais bon. Merci du coup de main... François Boisson -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: CD boutable avec shell
François Boisson, vendredi 25 mai 2007, 15:51:10 CEST execl(/bin/sh, sh, -i, NULL); et ça fonctionne... (Le fcntl permet de fermer le fd lorsque execl termine. Il faut quand même le fermer chez le père (il a été copié pour le fils).) Indépendamment de ça, c'est l'option -i qui fait fonctionner le shell. Bizarre que cette option soit indispensable ici mais bon. Non non. L’option -i permet surtout l’affichage du prompt. Sans -i, ça fonctionne aussi (en tout cas chez moi). Merci du coup de main... Pas de quoi. -- Sylvain Sauvage
Re: CD boutable avec shell
Le Fri, 25 May 2007 17:14:12 +0200 Sylvain Sauvage [EMAIL PROTECTED] a écrit: Indépendamment de ça, c'est l'option -i qui fait fonctionner le shell. Bizarre que cette option soit indispensable ici mais bon. Non non. L’option -i permet surtout l’affichage du prompt. Sans -i, ça fonctionne aussi (en tout cas chez moi). De plus en plus curieux, ton shell est bash ou autre chose??? (chez moi sans le -i ça plante complètement...) -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: CD boutable avec shell
François Boisson, vendredi 25 mai 2007, 17:42:24 CEST Le Fri, 25 May 2007 17:14:12 +0200 Sylvain Sauvage [EMAIL PROTECTED] a écrit: Indépendamment de ça, c'est l'option -i qui fait fonctionner le shell. Bizarre que cette option soit indispensable ici mais bon. Non non. L’option -i permet surtout l’affichage du prompt. Sans -i, ça fonctionne aussi (en tout cas chez moi). De plus en plus curieux, ton shell est bash ou autre chose??? Oui. /bin/sh - bash. En Sid. (chez moi sans le -i ça plante complètement...) Bizarre. À noter : je le lance en user normal (d’où le port 2323). [re-tests] Ah non, ça y est : avec telnet, ça ne marche pas. J’utilisais nc pour les tests. Effectivement, telnet a besoin de -i. Telnet doit faire des manips sur le flux. -- Sylvain Sauvage
Re: CD boutable avec shell
On Fri, May 25, 2007 at 06:05:35PM +0200, Sylvain Sauvage wrote: Ah non, ça y est : avec telnet, ça ne marche pas. J???utilisais nc pour les tests. Effectivement, telnet a besoin de -i. Telnet doit faire des manips sur le flux. J'avais pensé à des manips bizarres de libreadline, mais lancer '/usr/bin/gdb' marche parfaitement (avec telnet) [rejoue] AH! Si on lance avec: system(tee out | /bin/sh); on se rend compte que telnet converti les 'entrée' en CR/LF alors que nc n'envoit que CR. Donc sh doit essayer de lancer 'ls0x0d'... qui n'existe pas. sh -i doit faire 'ce qu'il faut' pour s'adapter aux différence de 'terminal'. Ça y est, c'est officiellement le weekend ;) Y. -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: CD boutable avec shell
Yves Rutschle, vendredi 25 mai 2007, 18:24:55 CEST On Fri, May 25, 2007 at 06:05:35PM +0200, Sylvain Sauvage wrote: Ah non, ça y est : avec telnet, ça ne marche pas. J???utilisais nc pour les tests. Effectivement, telnet a besoin de -i. Telnet doit faire des manips sur le flux. J'avais pensé à des manips bizarres de libreadline, mais lancer '/usr/bin/gdb' marche parfaitement (avec telnet) [rejoue] AH! Si on lance avec: system(tee out | /bin/sh); on se rend compte que telnet converti les 'entrée' en CR/LF alors que nc n'envoit que CR. Donc sh doit essayer de lancer 'ls0x0d'... qui n'existe pas. On aurait pu s’en rendre compte plus tôt, le message étant : ls : command not found et non : ls : command not found De l’intérêt de bien analyser les messages d’erreur. sh -i doit faire 'ce qu'il faut' pour s'adapter aux différence de 'terminal'. Oui. « Interactif » donc moins sourcilleux. Ça y est, c'est officiellement le weekend ;) Bon weekend, alors. -- Sylvain Sauvage
Re: CD boutable avec shell
Le Fri, 25 May 2007 19:13:15 +0200 Sylvain Sauvage [EMAIL PROTECTED] a écrit: ls : command not found De l’intérêt de bien analyser les messages d’erreur. Ben j'avais bien fait cette analyse (j'avais regardé les paquets par ethereal) mais j'attribuais le pbm à la redirection de stdin (que je n'avais jamais utilisé...). A l'usage le CD s'avère plus pratique avec cette version de telnetd... Dommage que j'en ai plus besoin :) François Boisson -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: CD boutable avec shell
Le Fri, 25 May 2007 18:24:55 +0200 Yves Rutschle [EMAIL PROTECTED] a écrit: AH! Si on lance avec: system(tee out | /bin/sh); on se rend compte que telnet converti les 'entrée' en CR/LF alors que nc n'envoit que CR. Donc sh doit essayer de lancer 'ls0x0d'... qui n'existe pas. sh -i doit faire 'ce qu'il faut' pour s'adapter aux différence de 'terminal'. Exact, je serais moins bête ce soir :) Ça y est, c'est officiellement le weekend ;) eh ben bon week end, pour lme moment orage maouss sur Paris :( -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
CD boutable avec shell
Si ça peut être utile, j'ai du faire un CD (en fait modifier un CD existant) pour pouvoir bouter une machine ayant son clavier et son écran mort mais fonctionnant. Le CD, sans intervention clavier, installe un RAM disque, boute sur ce RAM disque (noyau 2.6.17), essaye de configurer l'interface eth0 avec DHCP et si il ne le trouve pas, le configure comme 192.168.1.254. Puis il lance un démon telnetd minimal de ma conception (34K en statique, c'est plutôt petit :) ) auquel on peut accéder via telnet: On tape des commandes qui sont transmises à un shell bash et on reçoit les messages de sortie et d'erreurs. Ça m'a permis de travailler sur cette machine. Si ça peut servir... http://franboisson.free.fr/Isos/BootCD-2.6-shell.iso François Boisson PS: Ne pas taper letsgo, c'est un script de duplication de machine que je n'ai pas effacer, ça formatte /dev/sda... -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: CD boutable avec shell
Le Thu, 24 May 2007 19:00:14 +0200 François Boisson [EMAIL PROTECTED] a écrit: telnetd minimal de ma conception comprendre par là qu'il est primaire, il récupère la chaine tapée, l'envoi à bash et répercute la sortie... On doit pouvoir largement améliorer les choses F.B -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: CD boutable avec shell
On Thu, May 24, 2007 at 07:52:24PM +0200, François Boisson wrote: telnetd minimal de ma conception comprendre par là qu'il est primaire, il récupère la chaine tapée, l'envoi à bash et répercute la sortie... On doit pouvoir largement améliorer les choses Tu mets un shell bash complet mais pas un telnetd complet? C'est un choix curieux :) Intuitivement, je te conseillerais de remplacer bash et ton telnetd par busybox: tu as alors aussi ftpd, vi, et un tas d'autres trucs. Bon, tu n'as peut-être pas non plus envie d'y passer ta vie... Y. -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: CD boutable avec shell
Le Thu, 24 May 2007 20:08:31 +0200 Yves Rutschle [EMAIL PROTECTED] a écrit: On Thu, May 24, 2007 at 07:52:24PM +0200, François Boisson wrote: telnetd minimal de ma conception comprendre par là qu'il est primaire, il récupère la chaine tapée, l'envoi à bash et répercute la sortie... On doit pouvoir largement améliorer les choses Tu mets un shell bash complet mais pas un telnetd complet? C'est un choix curieux :) En fait, le systeme fait 70M au total avec bash, quelques utilitaires et busybox pour l'init et le reste. J'ai mis bash car comme c'est mon couteau suisse et que je ne travaille avec qu'en console, je trouvais le confort de bash agréable. Je suis parti de ce truc que j'avais fait il y a qques mois. Intuitivement, je te conseillerais de remplacer bash et ton telnetd par busybox: tu as alors aussi ftpd, vi, et un tas d'autres trucs. Ben oui sauf que le telnetd de busybox suppose /bin/login et donc tout un paquet de trucs qu'il n'y a pas. Étant pressé, j'ai donc vite fait sur le gaz fait un smalltelnetd sans identification avec une première boucle qui était (connexion étant la douille (socket)) [...] close(STDOUT_FILENO); dup(connexion); close(STDERR_FILENO); dup(connexion); close(STDIN_FILENO); dup(connexion); system(/bin/sh); [..] dans le traitement de la connexion. Malheureusement, la dérivation de stdin ne marche pas. Je capture donc la commande tapé et je l'envoie à system en ayant fait aupravant [..] close(STDOUT_FILENO); dup(connexion); close(STDERR_FILENO); dup(connexion); [..] qui fonctionne bien. L'erreur doit être grossière (j'ai essayé avec dup2 sans plus de succès). Le pbm est que les commandes doivent être impérativement sur une ligne... Bon, tu n'as peut-être pas non plus envie d'y passer ta vie... Pour le coup, si tu vois l'erreur, je suis preneur mais bon, maintenant le pbm est réglé... François Boisson Y. -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED] -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: CD boutable avec shell
On Thu, May 24, 2007 at 10:52:46PM +0200, François Boisson wrote: Ben oui sauf que le telnetd de busybox suppose /bin/login et donc tout un paquet de trucs qu'il n'y a pas. Avec le copain de busybox 'tinylogin' tu dois pouvoir finir ton système... Étant pressé, j'ai donc vite fait sur le gaz fait un smalltelnetd sans identification avec une première boucle qui était (connexion étant la douille (socket)) [...] close(STDOUT_FILENO); dup(connexion); close(STDERR_FILENO); dup(connexion); close(STDIN_FILENO); dup(connexion); system(/bin/sh); [..] Ça a l'air de marcher correctement ici (sauf que sh me dit 'command not found' pour absolument tout: doit y avoir un problème de PATH ou de LD_LIBRARY_PATH ou autre, mais il se fait trop tard pour chercher. Pour le coup, si tu vois l'erreur, je suis preneur mais bon, maintenant le pbm est réglé... Tu veux bien poster le code complet? (en privé ou sur site Web si c'est trop long) Y. -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]