2014-05-20 2 views
1

J'essaye de construire un groupe de framboise pi avec 4 pis de framboise. J'écris un script pour ajouter de nouveaux utilisateurs au système de telle sorte que l'utilisateur peut être ajouté sur tous les 4 Pis sans avoir à l'entrer plusieurs fois. La commande que j'utilise est adduser et j'ajoute des utilisateurs sur tous les 4 Pis en utilisant ssh. Voici à quoi ressemble cette ligne dans le script:Comment écrire un mot de passe en utilisant un script bash?

echo `ssh [email protected] "sudo adduser --shell /bin/bash user1"` 

Ceci est la ligne que j'utilise pour ajouter un nouvel utilisateur. Cependant, la commande après ceci est où j'ai besoin de changer le mot de passe. Si j'utilise

sudo passwd user1 

dans le script, pour chaque Pi, il invite l'utilisateur à entrer un mot de passe 4 fois. Je ne veux pas que cela arrive. Est-il possible d'obtenir que l'utilisateur entre le mot de passe une fois et le stocke dans une variable et l'offre à la commande passwd?

+0

SSH en tant que racine? – Biffen

+0

Aussi, pourquoi 'echo' avec des backticks au lieu de simplement la commande? – Biffen

+0

J'ai finalement réussi à le résoudre en utilisant useradd au lieu de adduser et en fournissant une option pour l'utilisateur d'entrer un mot de passe et de le crypter en utilisant la fonction crypt() dans Perl. Ces questions ont été utiles: http://stackoverflow.com/questions/1020534/useradd-using-crypt-password-generation http://stackoverflow.com/questions/714915/using-the-passwd-command-from- within-a-shell-script – Ahmis

Répondre

0

En supposant qu'il n'y a toujours pas de "useradd" sur Pi, je vous suggère de commencer à regarder dans les paramètres de ligne de commande de adduser?

adduser <username> -p <password> ... 
+0

En fait, il y a également une commande useradd. Je viens d'utiliser adduser car je connais cette commande. Il y a l'option --disable-password dans adduser mais je pense que cela ne fait que désactiver le mot de passe et vous permet de vous connecter via ssh ou quelque chose. Je ne comprends pas vraiment comment cela fonctionne. La commande useradd dispose d'une option --password permettant de définir un mot de passe par défaut. Je pense que je vais essayer ça pour le moment. Merci! – Ahmis

+0

@ user3657965: Je ne connais que --disabled-password qui est utile si l'administrateur du serveur ne veut pas connaître le mot de passe d'un utilisateur. Cependant, cela nécessite encore une action car l'utilisateur doit alors définir le mot de passe sur le compte en utilisant passwd. Si vous voulez vraiment automatiser le processus de création d'utilisateur, je suggère useradd avec l'option --passwd. Je le fais assez souvent lors de la préparation de serveurs Samba préconfigurés ... –

+0

Merci. J'essaye de faire cela maintenant mais j'ai un gros problème pour crypter le mot de passe. N'ayant jamais traité de cryptage auparavant, je suis un peu perdu et la fonction crypt() fonctionne apparemment pour C? Des conseils sur la façon de s'y prendre? – Ahmis

0

est ici un moyen d'exécuter un certain nombre de commandes via SSH avec sudo du côté opposé (dans le cas où la connexion en tant root est pas une option):

#!/bin/bash 

ssh [email protected] 'sudo bash -es' <<EOF 
command 1 
command 2 
EOF 

-e à « échec en cas d'échec » (en option).

-s lire à partir de STDIN.

(je lui ai donné un essai rapide et il semble travailler.)

Modifier

J'ai essayé avec -x (j'aime les commentaires), mais il fait la sortie brouillée, probablement parce que STDIN et STDERR étaient "désynchronisés" (peuvent être "résolus" avec 2>&1).

+0

Merci pour votre réponse. Je ne suis pas sûr que cela m'aidera cependant. En supposant que la commande 1 est adduser et que la commande 2 est passwd, l'utilisateur sera toujours invité à entrer le nouveau mot de passe chaque fois que ces trois lignes seront exécutées (ce qui est dans mon cas 4 fois). – Ahmis

+0

@ user3657965 Oh, je dois avoir mal compris alors. – Biffen

Questions connexes