Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/10/2010, à 12:33

gisclace

[resolu]commande read et identifiant non valable

Bonjour à tous, je rencontre un soucis sur un bash,

Sur mon premier pc, j'ai fait un bash pour ajouter plus rapidement un utilisateur à mon vsftpd, il donne ça:

#!/bin/bash
chemin1=/media/serveur/ftp/
chemin2=/etc/vsftpd/vsftpd_user_conf/
read -p "New user: " user
echo $user >> /etc/vsftpd/login.txt
read -p "Password for $user: " password
echo $password >> /etc/vsftpd/login.txt
read -p "Chemin apres ftp pour $user: " dossier
echo "local_root=$chemin1$dossier
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
virtual_use_local_privs=YES
local_umask=022
anon_umask=022" >> $chemin2$user
mkdir $chemin1$dossier
exit 0;

ça fonctionnait niquel, j'ai donc voulu le passer sur le pc qui me sert de serveur, et là, j'ai en retour une erreur aprés chaques saissis de texts:

>> : identifiant non valable

J'ai donc tout repris à zéro, un bash comme suit fonctionne:

#!/bin/bash
read -p "Password for user: " password
exit 0;

Je peux rentrer un text, par contre dés que je rajoute:

#!/bin/bash
read -p "Password for user: " password
echo $password >> /etc/vsftpd/login.txt
exit 0;

J'ai le même message d'erreur !!!!!

Je m'arache les cheveux ^^

Merci par avance pour le coup de main

ps:

echo plop >> /etc/vsftpd/login.txt

dans le terminal édide bien le fichier

Dernière modification par gisclace (Le 15/10/2010, à 16:22)

Hors ligne

#2 Le 15/10/2010, à 13:29

ehmicky

Re : [resolu]commande read et identifiant non valable

Essaie en mettant des double-guillemets autour de $password


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#3 Le 15/10/2010, à 13:46

Totor

Re : [resolu]commande read et identifiant non valable

Ce comportement est effectivement étrange ...
Que donne ceci :

#!/bin/bash
chemin1=/media/serveur/ftp/
chemin2=/etc/vsftpd/vsftpd_user_conf/
exec 3>&1 >>/etc/vsftpd/login.txt
read -p "New user: " user
echo "$user "
read -p "Password for $user: " password
echo "$password"
read -p "Chemin apres ftp pour $user: " dossier
exec >>"${chemin2}${user}"
echo "local_root=$chemin1$dossier
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
virtual_use_local_privs=YES
local_umask=022
anon_umask=022"
mkdir "${chemin1}${dossier}"
exec >&3 3>&-
exit 0;

ou encore (mais c'est une rustine) :

#!/bin/bash
chemin1=/media/serveur/ftp/
chemin2=/etc/vsftpd/vsftpd_user_conf/
{ read -p "New user: " user
echo "$user"
read -p "Password for $user: " password
echo "$password"
 } | tee -a /etc/vsftpd/login.txt >/dev/null
read -p "Chemin apres ftp pour $user: " dossier

echo "local_root=$chemin1$dossier
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
virtual_use_local_privs=YES
local_umask=022
anon_umask=022" | tee -a "${chemin2}${user}" >/dev/null
mkdir "${chemin1}${dossier}"
exit 0;

et puis, il serait bon de connaitre les options utilisées :
rajoute echo &- ainsi que shopt et set -x en 2, 3 et 4ème ligne

donne-nous les résultats

Dernière modification par Totor (Le 15/10/2010, à 13:49)


-- Lucid Lynx --

Hors ligne

#4 Le 15/10/2010, à 16:21

gisclace

Re : [resolu]commande read et identifiant non valable

@ehmicky : ca faisait la même ^^

@ totor: ton premier script marche niquel, j'ai rajouté un truc ou deux pour le finaliser, et là je test, et bien ca ne marche pas.......enfin tout s'édite bien mais ca ne marche pas pour créer l'utilisateur.

il semble que si le fichier login.txt n'est pas écris à la main, le dernier user mis ne fonctionne pas ......

je vais creuser, je suis sur que ca peut marcher.... En tous cas c'est bizar que mon bash fonctionne sur deux post et pas sur celui où j'en ai besoin...

en tous cas merci totor et ehmicky de vous étre penché sur mon cas.

Hors ligne

#5 Le 15/10/2010, à 17:27

ehmicky

Re : [resolu]commande read et identifiant non valable

Quel est le password que tu cherches à mettre dans la variable password (par exemple commence-t-il par un tiret) ? :

#N'imprime rien (si ce n'est une newline)
var="-e" ; echo "$var"

Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#6 Le 15/10/2010, à 18:08

gisclace

Re : [resolu]commande read et identifiant non valable

non non, j'ai fait le test en métant en user:test et pwr:test1, mais le soucis avec le bash, c'est que quand il édite mon login.txt, il ne place pas forcément le nouveau user et pwd qui correspond juste à la suite des autres...

Hors ligne

#7 Le 15/10/2010, à 18:54

Totor

Re : [resolu]commande read et identifiant non valable

gisclace a écrit :

il semble que si le fichier login.txt n'est pas écris à la main, le dernier user mis ne fonctionne pas ......

Je mise sur le fait qu'une ligne blanche soit nécessaire à la fin du fchier


-- Lucid Lynx --

Hors ligne

#8 Le 16/10/2010, à 09:38

gisclace

Re : [resolu]commande read et identifiant non valable

oui c'est bien ça, d'où le probléme, comment faire pour que la liste soit éditer comme suit:

login1
password1
login2
password2
newuser
newuserpassword

alors que j'ai un saut de ligne à la fermeture du fichiers?

Hors ligne

#9 Le 16/10/2010, à 10:37

gisclace

Re : [resolu]commande read et identifiant non valable

Bon et bien voila, c'est bon cela fonctionne, plutot que de vouloir rajouter en fin de liste le nouveau user et password, je les ai rajouté en début de liste, ainsi je garde le saut de ligne final, et cela fonctionne ^^

voici le bash final:

#!/bin/bash
chemin1=/media/serveur/ftp/
chemin2=/etc/vsftpd/vsftpd_user_conf/
read -p "New user: " user
echo "$user "
sed -i "1i$user" /etc/vsftpd/login.txt
read -p "Password for $user: " password
echo "$password"
sed -i "2i$password" /etc/vsftpd/login.txt
read -p "Chemin apres ftp pour $user: " dossier
exec >>"${chemin2}${user}"
echo "local_root=$chemin1$dossier
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
virtual_use_local_privs=YES
local_umask=022
anon_umask=022"
mkdir "${chemin1}${dossier}"
sudo db4.7_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db
sudo chmod 600 /etc/vsftpd/login.*
exit 0;

Je dois pouvoir l'alléger par exemple en retirant:

echo "$user " et echo "$password"

mais au moins ça m'assure que j'ai bien rentré ce que je voulais ^^

en tous cas encor merci à vous pour le coup de main

ps: si l'un de vous à une bonne adresse pour le exec je suis preneur, histoire de bien comprendre son utilitée ^^

Hors ligne

#10 Le 16/10/2010, à 14:27

ehmicky

Re : [resolu]commande read et identifiant non valable

Personnellement je vois deux utilités à exec :
1) exec COMMANDE exécute COMMANDE sans forker comme avec (et sûrement via) la famille exec*() en C, ce qui implique concrètement que le shell/subshell courant se ferme à la fin de COMMANDE.
2) exec REDIRECTIONS fait que les redirections s'exécutent sur le shell courant plutôt que sur le subshell de la commande courante. Par exemple quand tu fais :

/bin/echo "Erreur" > /dev/null

Cela fait une redirection de la sortie standard de echo vers /dev/null. Mais c'est limité au subshell ouvert par echo (car toute commande externe crée un subshell).
Mais si tu fais :

exec > /dev/null

Toute sortie standard dans le shell courant sera redirigée vers /dev/null. Cela dure jusqu'à ce que le shell se ferme (que ce soit un terminal virtuel, un script, etc.).
exec permet donc d'appliquer des redirections sur tout le shell courant. Donc si tu veux apprendre cela, c'est plus les redirections qu'il faut voir, tu as les chapitres 19 et 20 ici (notamment si ce sont les notations exec >&3 3>&- qui t'intringuent (= copie fd1 depuis fd3 ; ferme fd3)).

Edit : correction "echo" vers "/bin/echo"

Dernière modification par ehmicky (Le 16/10/2010, à 18:37)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#11 Le 16/10/2010, à 18:13

Totor

Re : [resolu]commande read et identifiant non valable

ehmicky a écrit :

Cela fait une redirection de la sortie standard de echo vers /dev/null. Mais c'est limité au subshell ouvert par echo (car toute commande externe crée un subshell).

pas tel que echo est utilisé ici car il s'agit de la bultin. Pour utiliser la commande externe, il faut préciser le chemin complet.


-- Lucid Lynx --

Hors ligne

#12 Le 16/10/2010, à 18:35

ehmicky

Re : [resolu]commande read et identifiant non valable

Totor a écrit :
ehmicky a écrit :

Cela fait une redirection de la sortie standard de echo vers /dev/null. Mais c'est limité au subshell ouvert par echo (car toute commande externe crée un subshell).

pas tel que echo est utilisé ici car il s'agit de la bultin. Pour utiliser la commande externe, il faut préciser le chemin complet.

Juste : corrigé.

Dernière modification par ehmicky (Le 16/10/2010, à 18:36)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#13 Le 17/10/2010, à 12:08

gisclace

Re : [resolu]commande read et identifiant non valable

ok, merci pour ces présision, je vais aller étudier ton lien.

Hors ligne

#14 Le 17/10/2010, à 12:43

FRUiT

Re : [resolu]commande read et identifiant non valable

Totor a écrit :

bultin.

Surement une faute d'inattention (mais on ne sait jamais ^^) : builtin

Dernière modification par FRUiT (Le 17/10/2010, à 12:47)


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#15 Le 18/10/2010, à 08:37

Totor

Re : [resolu]commande read et identifiant non valable

@FRUiT : oh oui, bien vu wink


-- Lucid Lynx --

Hors ligne