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 17/09/2014, à 10:46

Crestey

[Résolu] Ecrire un script incluant telnet

Bonjour à tous,
Contexte:
J'ai un NAS monté en nfs.
J'y conserve mes données personnelles "sensible", photos de famille, films de famille, ..., archives en tout genre auxquelles je tiens beaucoup.
L'autre jour, en vue d'offrir un album photo pour les 50 ans de mon épouse, ma fille a fait un "déplacer" de ces photos vers un répertoire à elle, au lieu de faire un copier coller.
Bref, elle a mis un peu le boxon dans les photos soigneusement classées et archivées.

Solution actuelle
Pour éviter que cela ne se reproduise, j'ai activé le bit d'immuabilité sur le répertoire contenant ces fichiers "sensibles".
Pour cela j'ai utilisé la commande telnet pour accéder au NAS puis utilisé la commande chattr. Ça donne ça :

crestey3@PC3:~$ telnet 192.168.0.20
Trying 192.168.0.20...
Connected to 192.168.0.20.
Escape character is '^]'.


BusyBox v1.8.1 (2007-11-20 23:39:08 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.

/ # chattr +i -R /mnt/HD_a2/Souvenirs
/ # exit
Connection closed by foreign host.
crestey3@PC3:~$

Ma question
Je dois de temps en temps désactiver le bit d'immuabilité le temps de rajouter des photos.
Puis-je automatiser tout cela par un script ?

A vous lire

Dernière modification par Crestey (Le 17/09/2014, à 12:56)


Merci à tous.
Sous Ubuntu/XFCE depuis 2013. Ça fonctionne vraiment très bien.

Hors ligne

#2 Le 17/09/2014, à 11:20

tiramiseb

Re : [Résolu] Ecrire un script incluant telnet

Salut,

Je pense que expect peut te servir.
http://fr.wikipedia.org/wiki/Expect

Hors ligne

#3 Le 17/09/2014, à 12:27

Crestey

Re : [Résolu] Ecrire un script incluant telnet

Merci tiramiseb. Ça marche nickel après avoir installé le paquet expect.
Voici le script

#!/usr/bin/expect -f
# Open a telnet session to a remote server, and wait for a username prompt.
spawn telnet 192.168.0.20
# Send the prebuilt command, and then wait for another shell prompt.
send "chattr +i -R /mnt/HD_a2/Souvenirs\r"
expect "%"
# Exit the telnet session, and wait for a special end-of-file character.
send "exit\r"
expect eof

Et voici le résultat :

crestey3@PC3:~$ ./tn
spawn telnet 192.168.0.20
chattr +i -R /mnt/HD_a2/Souvenirs
Trying 192.168.0.20...
Connected to 192.168.0.20.
Escape character is '^]'.
chattr +i -R /mnt/HD_a2/Souvenirs


BusyBox v1.8.1 (2007-11-20 23:39:08 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.

/ # chattr +i -R /mnt/HD_a2/Souvenirs
/ # exit
Connection closed by foreign host.
crestey3@PC3:~$

Evidemment, comme j'en demande toujours plus, j'aimerais passer un paramètre $1 dans la commande chattr pour pouvoir faire chattr -i (pour déprotéger) ou +i (pour re-protéger).
Mais ça marche pô ! le paramètre n'est pas compris car je pense que c'est un script expect.
Y a t il une solution d'après toi ?


Merci à tous.
Sous Ubuntu/XFCE depuis 2013. Ça fonctionne vraiment très bien.

Hors ligne

#4 Le 17/09/2014, à 12:33

tiramiseb

Re : [Résolu] Ecrire un script incluant telnet

Il suffit de lire la manpage d'expect :

« Optional args are constructed into a list and stored in the variable named argv. argc is initialized to the length of argv. »
(l'emphase est de moi)

Hors ligne

#5 Le 17/09/2014, à 12:44

Crestey

Re : [Résolu] Ecrire un script incluant telnet

Merci
Voici donc le script modifié

#!/usr/bin/expect -f
# Open a telnet session to a remote server, and wait for a username prompt.
spawn telnet 192.168.0.20
# Send the prebuilt command, and then wait for another shell prompt.
send "chattr [lindex $argv 0] -R /mnt/HD_a2/Souvenirs\r"
expect "%"
# Exit the telnet session, and wait for a special end-of-file character.
send "exit\r"
expect eof

et le résultat

crestey3@PC3:~$ ./tn +i
spawn telnet 192.168.0.20
chattr +i -R /mnt/HD_a2/Souvenirs
Trying 192.168.0.20...
Connected to 192.168.0.20.
Escape character is '^]'.
chattr +i -R /mnt/HD_a2/Souvenirs


BusyBox v1.8.1 (2007-11-20 23:39:08 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.

/ # chattr +i -R /mnt/HD_a2/Souvenirs
/ # exit
Connection closed by foreign host.
crestey3@PC3:~$

J'ai trouvé la réponse
lindex n'est bizarrement pas dans le man

Dernière modification par Crestey (Le 17/09/2014, à 12:50)


Merci à tous.
Sous Ubuntu/XFCE depuis 2013. Ça fonctionne vraiment très bien.

Hors ligne

#6 Le 17/09/2014, à 12:49

tiramiseb

Re : [Résolu] Ecrire un script incluant telnet

Je te propose même de mettre "+" ou "-" comme argument (le "i" étant alors dans le script), au lieu de "+i" et "-i" (feignasse power) smile

Dernière modification par tiramiseb (Le 17/09/2014, à 12:50)

Hors ligne

#7 Le 17/09/2014, à 13:10

Crestey

Re : [Résolu] Ecrire un script incluant telnet

Merci feignasse power, Je fais la modif...
Cependant, comme ton dernier message + le mien contiennent 402 caractères, il va falloir maintenant que je lance mon script au moins 403 fois pour que ta suggestion devienne rentable en terme de caractères tapés au claviers big_smile !


Merci à tous.
Sous Ubuntu/XFCE depuis 2013. Ça fonctionne vraiment très bien.

Hors ligne