BS> exemple de base :
BS>
BS> sudo apt-get update --fix-missing
cette commande lance apt si le user qui lance le script est dans sudoers (s inon demande le pass)
On Mon, 19 Dec 2016 13:12:01 +0100 Daniel Caillibaud wrote:
Le 19/12/16 à 12:57, bernard schoenacker a écrit : BS> je souhaite automatiser la connection sudo et je pense BS> employer echo et read : Pas compris BS> exemple de base : BS> BS> sudo apt-get update --fix-missing cette commande lance apt si le user qui lance le script est dans sudoers (sinon demande le pass) BS> echo toto affiche "toto" BS> read toto attend une saisie utilisateur qui sera affectée à la variable toto BS> est ce correct ? Je sais pas ce que tu veux faire, mais si c'est un script qui se connecte en ssh pour lancer un update ou upgrade, il vaut mieux ajouter la clé ssh du user qui lancera le script directement au root de la machine sur laquelle le lancer, éventuellement avec un shell de ton cru pour ne lancer que les commandes auquel il a droit. Par ex, dans le /root/.ssh/authorized_keys de la machine concernée command="/root/bin/mon-shell-a-moi.sh",no-port-forwarding,from="ip autorisées" ssh-rsa laClé et dans /root/bin/mon-shell-a-moi.sh un truc du genre #!/bin/bash case "$SSH_ORIGINAL_COMMAND" in ping) echo "pong";; apt-update) apt-get update --fix-missing;; # autres commandes autorisées … # par défaut un message (ici il donne la commande mais c'est pas # obligatoire évidemment) *) echo "Commande « $SSH_ORIGINAL_COMMAND » non autorisée" >&2; exit 1;; esac et tu testes avec `ssh ping` qui devrait afficher pong. -- Daniel L'argent a rendu l'homme esclave et personne ne fera de l'argent son esclave. Gilles Olive
bonjour, après quelques tatônements : cat>script-connect.sh<<EOF #!/bin/bash # script-connect.sh # set chmod 644 sudo apt-get update --fix-missing read toto echo $ EOF merci pour tout slt bernard -- bernard schoenacker
On Mon, 19 Dec 2016 13:12:01 +0100
Daniel Caillibaud <ml@lairdutemps.org> wrote:
Le 19/12/16 à 12:57, bernard schoenacker
<bernard.schoenacker@free.fr> a écrit :
BS> je souhaite automatiser la connection sudo et je pense
BS> employer echo et read :
Pas compris
BS> exemple de base :
BS>
BS> sudo apt-get update --fix-missing
cette commande lance apt si le user qui lance le script est dans
sudoers (sinon demande le pass)
BS> echo toto
affiche "toto"
BS> read toto
attend une saisie utilisateur qui sera affectée à la variable toto
BS> est ce correct ?
Je sais pas ce que tu veux faire, mais si c'est un script qui se
connecte en ssh pour lancer un update ou upgrade, il vaut mieux
ajouter la clé ssh du user qui lancera le script directement au root
de la machine sur laquelle le lancer, éventuellement avec un shell de
ton cru pour ne lancer que les commandes auquel il a droit.
Par ex, dans le /root/.ssh/authorized_keys de la machine concernée
command="/root/bin/mon-shell-a-moi.sh",no-port-forwarding,from="ip
autorisées" ssh-rsa laClé
et dans /root/bin/mon-shell-a-moi.sh un truc du genre
#!/bin/bash
case "$SSH_ORIGINAL_COMMAND" in
ping) echo "pong";;
apt-update) apt-get update --fix-missing;;
# autres commandes autorisées
…
# par défaut un message (ici il donne la commande mais c'est pas
# obligatoire évidemment)
*) echo "Commande « $SSH_ORIGINAL_COMMAND » non autorisée" >&2;
exit 1;; esac
et tu testes avec `ssh root@tamachine ping` qui devrait afficher pong.
--
Daniel
L'argent a rendu l'homme esclave et
personne ne fera de l'argent son esclave.
Gilles Olive
bonjour,
après quelques tatônements :
cat>script-connect.sh<<EOF
#!/bin/bash
# script-connect.sh
# set chmod 644
sudo apt-get update --fix-missing
read toto
echo $
EOF
merci pour tout
slt
bernard
--
bernard schoenacker <bernard.schoenacker@free.fr>
On Mon, 19 Dec 2016 13:12:01 +0100 Daniel Caillibaud wrote:
Le 19/12/16 à 12:57, bernard schoenacker a écrit : BS> je souhaite automatiser la connection sudo et je pense BS> employer echo et read : Pas compris BS> exemple de base : BS> BS> sudo apt-get update --fix-missing cette commande lance apt si le user qui lance le script est dans sudoers (sinon demande le pass) BS> echo toto affiche "toto" BS> read toto attend une saisie utilisateur qui sera affectée à la variable toto BS> est ce correct ? Je sais pas ce que tu veux faire, mais si c'est un script qui se connecte en ssh pour lancer un update ou upgrade, il vaut mieux ajouter la clé ssh du user qui lancera le script directement au root de la machine sur laquelle le lancer, éventuellement avec un shell de ton cru pour ne lancer que les commandes auquel il a droit. Par ex, dans le /root/.ssh/authorized_keys de la machine concernée command="/root/bin/mon-shell-a-moi.sh",no-port-forwarding,from="ip autorisées" ssh-rsa laClé et dans /root/bin/mon-shell-a-moi.sh un truc du genre #!/bin/bash case "$SSH_ORIGINAL_COMMAND" in ping) echo "pong";; apt-update) apt-get update --fix-missing;; # autres commandes autorisées … # par défaut un message (ici il donne la commande mais c'est pas # obligatoire évidemment) *) echo "Commande « $SSH_ORIGINAL_COMMAND » non autorisée" >&2; exit 1;; esac et tu testes avec `ssh ping` qui devrait afficher pong. -- Daniel L'argent a rendu l'homme esclave et personne ne fera de l'argent son esclave. Gilles Olive
bonjour, après quelques tatônements : cat>script-connect.sh<<EOF #!/bin/bash # script-connect.sh # set chmod 644 sudo apt-get update --fix-missing read toto echo $ EOF merci pour tout slt bernard -- bernard schoenacker
bernard schoenacker
On Mon, 19 Dec 2016 13:16:31 +0100 Daniel Caillibaud wrote:
echo toto | ssh 'sudo -S uneCommande'
bonjour, j'ai essayé et c'est un échec, qui peut me trouver une astuce ? je continue de chercher slt bernard -- bernard schoenacker
On Mon, 19 Dec 2016 13:16:31 +0100
Daniel Caillibaud <ml@lairdutemps.org> wrote:
echo toto | ssh root@machine 'sudo -S uneCommande'
bonjour,
j'ai essayé et c'est un échec, qui peut me trouver une astuce ?
je continue de chercher
slt
bernard
--
bernard schoenacker <bernard.schoenacker@free.fr>
On Mon, 19 Dec 2016 13:16:31 +0100 Daniel Caillibaud wrote:
echo toto | ssh 'sudo -S uneCommande'
bonjour, j'ai essayé et c'est un échec, qui peut me trouver une astuce ? je continue de chercher slt bernard -- bernard schoenacker
Francois Lafont
Bonsoir, On 12/19/2016 05:17 PM, bernard schoenacker wrote:
Daniel Caillibaud wrote:
echo toto | ssh 'sudo -S uneCommande'
bonjour, j'ai essayé et c'est un échec, qui peut me trouver une astuce ? je continue de chercher
Personnellement je n'ai pas trop compris où il était question de ssh dans le premier message (assez laconique) de ce fil. En revanche, je peux confirmer que l'option -S (ou --stdin) indiquée par Daniel fait bien le job de lire le mot de passe sudo sur stdin. Par exemple : ~$ whoami flaf ~$ pwd='mauvais-mot-de-passe' ~$ printf '%sn' "$pwd" | sudo --stdin --prompt='' touch /tmp/test Sorry, try again. sudo: 1 incorrect password attempt ~$ ls -l /tmp/test ls: cannot access /tmp/test: No such file or directory ~$ pwd='le-bon-mot-de-passe' ~$ printf '%sn' "$pwd" | sudo --stdin --prompt='' touch /tmp/test ~$ ls -l /tmp/test -rw-r--r-- 1 root root 0 Dec 20 01:26 /tmp/test Il faut se méfier de "echo" pour envoyer le mot de passe, surtout si celui-ci contient des caractères « exotiques » et plutôt utiliser printf comme ci-dessus qui est plus robuste par rapport à ça. -- François Lafont
Bonsoir,
On 12/19/2016 05:17 PM, bernard schoenacker wrote:
Daniel Caillibaud <ml@lairdutemps.org> wrote:
echo toto | ssh root@machine 'sudo -S uneCommande'
bonjour,
j'ai essayé et c'est un échec, qui peut me trouver une astuce ?
je continue de chercher
Personnellement je n'ai pas trop compris où il était question
de ssh dans le premier message (assez laconique) de ce fil. En
revanche, je peux confirmer que l'option -S (ou --stdin) indiquée
par Daniel fait bien le job de lire le mot de passe sudo sur stdin.
Par exemple :
~$ ls -l /tmp/test
-rw-r--r-- 1 root root 0 Dec 20 01:26 /tmp/test
Il faut se méfier de "echo" pour envoyer le mot de passe, surtout
si celui-ci contient des caractères « exotiques » et plutôt utiliser
printf comme ci-dessus qui est plus robuste par rapport à ça.
Bonsoir, On 12/19/2016 05:17 PM, bernard schoenacker wrote:
Daniel Caillibaud wrote:
echo toto | ssh 'sudo -S uneCommande'
bonjour, j'ai essayé et c'est un échec, qui peut me trouver une astuce ? je continue de chercher
Personnellement je n'ai pas trop compris où il était question de ssh dans le premier message (assez laconique) de ce fil. En revanche, je peux confirmer que l'option -S (ou --stdin) indiquée par Daniel fait bien le job de lire le mot de passe sudo sur stdin. Par exemple : ~$ whoami flaf ~$ pwd='mauvais-mot-de-passe' ~$ printf '%sn' "$pwd" | sudo --stdin --prompt='' touch /tmp/test Sorry, try again. sudo: 1 incorrect password attempt ~$ ls -l /tmp/test ls: cannot access /tmp/test: No such file or directory ~$ pwd='le-bon-mot-de-passe' ~$ printf '%sn' "$pwd" | sudo --stdin --prompt='' touch /tmp/test ~$ ls -l /tmp/test -rw-r--r-- 1 root root 0 Dec 20 01:26 /tmp/test Il faut se méfier de "echo" pour envoyer le mot de passe, surtout si celui-ci contient des caractères « exotiques » et plutôt utiliser printf comme ci-dessus qui est plus robuste par rapport à ça. -- François Lafont
bernard schoenacker
On Tue, 20 Dec 2016 01:30:54 +0100 Francois Lafont wrote:
Bonsoir, On 12/19/2016 05:17 PM, bernard schoenacker wrote:
Daniel Caillibaud wrote:
echo toto | ssh 'sudo -S uneCommande'
bonjour, j'ai essayé et c'est un échec, qui peut me trouver une astuce ? je continue de chercher
Personnellement je n'ai pas trop compris où il était question de ssh dans le premier message (assez laconique) de ce fil. En revanche, je peux confirmer que l'option -S (ou --stdin) indiquée par Daniel fait bien le job de lire le mot de passe sudo sur stdin. Par exemple : ~$ whoami flaf ~$ pwd='mauvais-mot-de-passe' ~$ printf '%sn' "$pwd" | sudo --stdin --prompt='' touch /tmp/test Sorry, try again. sudo: 1 incorrect password attempt ~$ ls -l /tmp/test ls: cannot access /tmp/test: No such file or directory ~$ pwd='le-bon-mot-de-passe' ~$ printf '%sn' "$pwd" | sudo --stdin --prompt='' touch /tmp/test ~$ ls -l /tmp/test -rw-r--r-- 1 root root 0 Dec 20 01:26 /tmp/test Il faut se méfier de "echo" pour envoyer le mot de passe, surtout si celui-ci contient des caractères « exotiques » et plutôt utiliser printf comme ci-dessus qui est plus robuste par rapport à ça. -- François Lafont
bonjour, merci beaucoup, la syntaxe est correcte même pour d'autres instructions (apt-get update) slt bernard -- bernard schoenacker
On Tue, 20 Dec 2016 01:30:54 +0100
Francois Lafont <mathsattacks@free.fr> wrote:
Bonsoir,
On 12/19/2016 05:17 PM, bernard schoenacker wrote:
> Daniel Caillibaud <ml@lairdutemps.org> wrote:
>
>> echo toto | ssh root@machine 'sudo -S uneCommande'
>
> bonjour,
>
> j'ai essayé et c'est un échec, qui peut me trouver une astuce ?
>
> je continue de chercher
Personnellement je n'ai pas trop compris où il était question
de ssh dans le premier message (assez laconique) de ce fil. En
revanche, je peux confirmer que l'option -S (ou --stdin) indiquée
par Daniel fait bien le job de lire le mot de passe sudo sur stdin.
Par exemple :
~$ ls -l /tmp/test
-rw-r--r-- 1 root root 0 Dec 20 01:26 /tmp/test
Il faut se méfier de "echo" pour envoyer le mot de passe, surtout
si celui-ci contient des caractères « exotiques » et plutôt utiliser
printf comme ci-dessus qui est plus robuste par rapport à ça.
--
François Lafont
bonjour,
merci beaucoup, la syntaxe est correcte même pour d'autres
instructions (apt-get update)
slt
bernard
--
bernard schoenacker <bernard.schoenacker@free.fr>
On Tue, 20 Dec 2016 01:30:54 +0100 Francois Lafont wrote:
Bonsoir, On 12/19/2016 05:17 PM, bernard schoenacker wrote:
Daniel Caillibaud wrote:
echo toto | ssh 'sudo -S uneCommande'
bonjour, j'ai essayé et c'est un échec, qui peut me trouver une astuce ? je continue de chercher
Personnellement je n'ai pas trop compris où il était question de ssh dans le premier message (assez laconique) de ce fil. En revanche, je peux confirmer que l'option -S (ou --stdin) indiquée par Daniel fait bien le job de lire le mot de passe sudo sur stdin. Par exemple : ~$ whoami flaf ~$ pwd='mauvais-mot-de-passe' ~$ printf '%sn' "$pwd" | sudo --stdin --prompt='' touch /tmp/test Sorry, try again. sudo: 1 incorrect password attempt ~$ ls -l /tmp/test ls: cannot access /tmp/test: No such file or directory ~$ pwd='le-bon-mot-de-passe' ~$ printf '%sn' "$pwd" | sudo --stdin --prompt='' touch /tmp/test ~$ ls -l /tmp/test -rw-r--r-- 1 root root 0 Dec 20 01:26 /tmp/test Il faut se méfier de "echo" pour envoyer le mot de passe, surtout si celui-ci contient des caractères « exotiques » et plutôt utiliser printf comme ci-dessus qui est plus robuste par rapport à ça. -- François Lafont
bonjour, merci beaucoup, la syntaxe est correcte même pour d'autres instructions (apt-get update) slt bernard -- bernard schoenacker