#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
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
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)
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
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 là
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)
Dernière modification par tiramiseb (Le 17/09/2014, à 12:50)
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
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 !
Merci à tous.
Sous Ubuntu/XFCE depuis 2013. Ça fonctionne vraiment très bien.
Hors ligne