Forum debian-fr.org

Rechercher:

* Connexion   * M’enregistrer

* FAQ    * Rechercher





Poster un nouveau sujet Répondre au sujet  [ 285 messages ]  Aller à la page Précédente  1 ... 8, 9, 10, 11, 12  Suivante
Auteur Message
MessagePosté: 28 Juil 2011 15:12 
Hors ligne
Dieu du clavier.
Avatar de l’utilisateur

Inscription: 28 Aoû 2003 14:01
Messages: 11208
Localisation: Le domaine de Henri IV
Re,

J'ai lu le setup (après avoir installé unrar !) et comme je n'aime pas les scripts qui installent LAMP sans me prévenir, je passe :smile:

_________________
http://counter.li.org/cgi-bin/certificate.cgi/302199
Debian 3.4-0.slh1-aptosid (3.4-1)GT520 > nVidia 302.11 ==> Intel (I5) ~3GHz

http://aptosid-fr.org/


Haut
 Profil  
 
MessagePosté: 28 Juil 2011 15:22 
Hors ligne
Modérateur du forum
Avatar de l’utilisateur

Inscription: 13 Mar 2009 08:30
Messages: 9920
Localisation: Madagascar - Isalo
Salut,
J'ai téléchargé deux fois un fichier PPDR.rar impossible à décompresser, c'est pourquoi j'ai été si prompt à virer le lien.

L'hébergement choisi ne m'a pas poussé à être indulgent;
C'est ton premier message;
Tu ne donne aucunes explications sur l'origine de ton script.

Je m'excuse si je suis allé un peu trop vite en besogne...

Edit: J'ai restauré le message original à la virgule près!

_________________
Le wiki du forum! - Pastbin && service d'hébergement d'images
:005 Référencement sous MsDos... :happy-jumpgreen:


Haut
 Profil  
 
MessagePosté: 28 Juil 2011 15:52 
Hors ligne

Inscription: 28 Juil 2011 12:12
Messages: 4
"lol" je te remercie pour tes excuses :023

Par contre je ne comprend pas, je ne cherche à piéger personne, les composants de LAMP sont installés car on en a besoin dans le cas d'un serveur mail avec cette configuration. :think:

Vous ne voulez pas cette configuration ? Très bien n'utilisez pas le script je n'oblige personne, moi je sais qu'il pourrait me resservir pour un prochain serveur chez l'hébergeur web pour qui je travaille.

Ricardo : Il existe assez de tuto sur le web traitant sur le sujet moi je ne propose qu'un script qui automatise un peu tout ça, après tu ne peux pas l'utiliser sans savoir comment ces logiciels fonctionnent c'est sûr. Si ça n'a rien à faire ici je ne sais pas trop ou le mettre.


Enfin bon je ne vous "embêterai" (c'est l'impression que ça donne) plus sur ce forum.

Bonne continuation et j'espère que cela servira à quelqu'un.


Haut
 Profil  
 
MessagePosté: 28 Juil 2011 16:05 
En ligne
Administrateur du forum
Avatar de l’utilisateur

Inscription: 15 Oct 2004 01:13
Messages: 19016
Localisation: Périgord
Je regrette que tu ne veuilles pas faire l'effort d'écrire un tuto complet, c'est ton droit mais nous avons des règles de "non pompage" ici.
Je suis obligé de supprimer tes liens.

_________________
"L'action est plus efficace que la polémique, mais plus rare."
"Pas de Droite, pas de Gauche mais "ailleurs et partout", "Franchouillard" et même pas honte !
Ricardo (1936-...)


Haut
 Profil  
 
MessagePosté: 10 Nov 2011 00:35 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 25 Oct 2011 15:33
Messages: 251
Localisation: 92 - Hauts de Seine
Salut à tous :P (dernière édition de ce post : lundi 30 avril 2012, 19:43:50 (UTC+0200))

Voici un petit script que j'utilise pour récupérer et consigner l'IP publique de ma livebox Sagem. Ça marche très bien sur ma Squeeze. Ce script ne comporte aucun danger à l'exécution, sauf si vous avez un fichier ~/livebox/ip_du_jour.txt auquel cas il écrira à la fin de ce fichier.

Je me demande si quelqu'un sait faire autrement ? (pas question d'aller sur un site internet, je crois avoir vu cette approche dans ce sujet + haut). Je suis bien intéressé par vos éventuelles approches locales du problème (oui ça peut être important de connaître son IP à une date donnée ) j'ai pas trouvé autre chose que ça, mais vous ?

J'était dans le dep. 27 récemment et mon IP changeait tous les jours, je suis de retour sur Paris depuis le 4 Novembre 2011, et je vois que mon IP ne change plus depuis 6 jours ... instructif tout ça ( moi j'aime bien quelle change)


Edit: j'ai modifié mon script originel pour tenir compte des remarques instructives de BBT1 à son sujet. Encore merci BBT1.

Edit 2 : en fait ce Lundi 30 Avril 2012, je m'aperçois que la simple commande :

Code:
host livebox


retourne toute les ips de la Livebox, donc dans le script qui suit la commande wget est un peu lourde : je modifierai le script en conséquence quand j'en aurai le temps ...
Code:
cat ip_livebox_du_jour.sh

#! /bin/bash
# Description : permet de récupérer l'ip PUBLIQUE de la livebox Sagem (2011)
# à chaque ouverture d'un terminal et de la consigner dans ~/${rep}/${fichier_ip}
# à condition d'appeler ce script depuis ~/.bashrc ( ce que je fais en tout cas)
# Auteur : "Rantanplan aussi !" sur http://www.debian-fr.org/
# dernière mise-à-jour : jeudi 1 mars 2012, 00:17:07 (UTC+0100)
# dernière modif : ligne 23 auparavant on lisait egrep -q, on lit maintenant grep -qE,
# mais je me rends compte que l'on ne peut pas sérieusement maintenir un prg de cette façon ...

if ! ping -q -c1 -W1 livebox >/dev/null 2>&1; then
   echo "pas de connexion à livebox" >&2
   exit 1
fi

fichier_ip="ip_du_jour.txt"
rep="livebox"
date_jour=$(date +%F)

mkdir ~/${rep} 2>/dev/null

ip=$(wget -q -O - http://livebox/index.cgi | grep -i -A1 'ip wan' | tail -1 | sed 's|^.*>\(.*\)</td>$|\1|')

if ! echo "$ip" | grep -qE '^([[:digit:]]+\.){3}[[:digit:]]+$'; then
   echo "Il y a un pb avec le script $0" >&2
   exit 2
fi

echo -e "IP publique\\t$ip"

derniere_ip=$(tail -1 ~/${rep}/${fichier_ip} 2>/dev/null | sed 's/^.*[[:blank:]]\+//')

[ "$derniere_ip" = "$ip" ] && exit 0

echo -e "$date_jour\\t$ip" >> ~/${rep}/${fichier_ip}

_________________
Hard - Asus eeePC 1000H 1 Gib / 160 Gb / 500 Gb USB -Intel Atom N270-32b-1.6 Ghz-CG:Intel 945GME Express Integrated rev 03 - Audio Intel N10/ICH 7 rev 02 Soft - Debian Squeeze stable, Gnome, eCryptfs > /home/users - Wxp->roue de secours


Dernière édition par Rantanplan aussi ! le 30 Avr 2012 19:58, édité 5 fois.

Haut
 Profil  
 
MessagePosté: 10 Nov 2011 03:59 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 25 Oct 2011 15:33
Messages: 251
Localisation: 92 - Hauts de Seine
Mat' a écrit:
Niloo a écrit:
Code:
makepasswd --chars 10

Fait la même ;)


On a aussi

Code:
pwgen 10 -1 -s

:023


A propos de la génération de mot de passe aléatoires j'ai trouvé ceci sur le net :
Code:
< /dev/urandom tr -cd \[:graph:\] | fold -w 32 | head -n 5
3ObdJ4a?eAY9<)w`2N31f<i/FZfYGRyS
@5|LoGC;&aXuzJc/fHcl)h-x.[{M"i:f
(u)O515d24wlu$Tg+3mzVCgG44nOYNUa
"]$=:P\)~"xiepG)rH*VN+HxzZh/pmRz
OmBovB2&6F4H8)hSjimM$w2/{3HBh}sa

ça marche mais je comprends pas le "<" de
Code:
< /dev/urandom

Quelqu'un a une explication ?

Thanks !

_________________
Hard - Asus eeePC 1000H 1 Gib / 160 Gb / 500 Gb USB -Intel Atom N270-32b-1.6 Ghz-CG:Intel 945GME Express Integrated rev 03 - Audio Intel N10/ICH 7 rev 02 Soft - Debian Squeeze stable, Gnome, eCryptfs > /home/users - Wxp->roue de secours


Haut
 Profil  
 
MessagePosté: 10 Nov 2011 16:46 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 02 Avr 2009 23:14
Messages: 419
Localisation: Paris
C'est juste une redirection de l'entrée standard sur un fichier.

Code:
< /dev/urandom tr -cd \[:graph:\] | fold -w 32 | head -n 5

est équivalent à
Code:
tr -cd \[:graph:\] </dev/urandom | fold -w 32 | head -n 5

et fait la même chose que
Code:
cat /dev/urandom | tr -cd \[:graph:\] | fold -w 32 | head -n 5


Haut
 Profil  
 
MessagePosté: 10 Nov 2011 17:12 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 02 Avr 2009 23:14
Messages: 419
Localisation: Paris
Quelques remarques :

Rantanplan aussi ! a écrit:
Code:
#! /bin/bash
# Description : permet de récupérer l'ip PUBLIQUE de la livebox Sagem (2011)
# à chaque ouverture d'un terminal et de la consigner dans ~/${rep}/${fichier_ip}
# à condition d'appeler ce script depuis ~/.bashrc ( ce que je fais en tout cas)
# Auteur : "Rantanplan aussi !" sur http://www.debian-fr.org/
# dernière mise-à-jour : mercredi 9 novembre 2011, 23:17:54 (UTC+0100)

#BBT Privilégier les structures de contrôle classique pour la clarté
if ! ping -q -c1 -W1 livebox >/dev/null 2>&1; then
  #BBT Les messages d'erreur vont vers la sortie d'erreur
  echo "pas de connexion à livebox" >&2
  exit 1
fi

fichier_ip="ip_du_jour.txt"
rep="livebox"
date_jour=$(date +%F)

#BBT Créer manuellement fichier_ip est inutile
mkdir ~/${rep} 2>/dev/null

#BBT Pas de besoin de conserver index.cgi, redirection de curl vers stdout
#BBT Allègement de l'écriture du sed
ip=$(wget -q -O - http://livebox/index.cgi | grep -i -A1 'ip wan' | tail -1 | sed 's|^.*>\(.*\)</td>$|\1|')

#BBT écriture plus directe de ce que l'on attend avec une expression régulière
if ! echo "$ip" | egrep -q '^([[:digit:]]+\.){3}[[:digit:]]+$'; then
  echo "Il y a un pb avec le script $0" >&2
  exit 2
fi

#BBT mettre explicitement une tabulation pour la présentation
echo -e "IP publique\\t$ip"

derniere_ip=$(tail -1 ~/${rep}/${fichier_ip}|cut -d' ' -f5)

[ "$derniere_ip" = "$ip" ] && exit 0

echo -e "$date_jour\\t$ip" >> ~/${rep}/${fichier_ip}


Haut
 Profil  
 
MessagePosté: 10 Nov 2011 19:38 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 25 Oct 2011 15:33
Messages: 251
Localisation: 92 - Hauts de Seine
BBT1 a écrit:
C'est juste une redirection de l'entrée standard sur un fichier.

Code:
< /dev/urandom tr -cd \[:graph:\] | fold -w 32 | head -n 5

est équivalent à
Code:
tr -cd \[:graph:\] </dev/urandom | fold -w 32 | head -n 5

et fait la même chose que
Code:
cat /dev/urandom | tr -cd \[:graph:\] | fold -w 32 | head -n 5

D'abord merci à toi d'éclairer ma lanterne, ça fait plaisir !

C'est bizarre parce que j'avais essayé à l'instinct la dernière forme que tu donnes :
Code:
cat /dev/urandom | tr -cd \[:graph:\] | fold -w 32 | head -n 5

Mais ça ne "sortait" rien ! j'ai dû me vautrer et écrire /dev/random au lieu de /dev/urandom, sinon je vois pas, mais bref

Autant les 2 dernières formes me sont familières et facilement compréhensible, autant la première reste obscure pour moi, je vais tâcher de bosser un peu là dessus pour que ça devienne clair ( j'avais bien compris dés le début qu'il s'agissait d'une redirection de l'entrée std, mais franchement je voyais pas en quoi c'était une redirection de l'entrée de la cde tr, je vois tjs pas d'ailleurs :shifty: :D ya un mécanisme du shell/entrée-sortie que je ne vois pas)

_________________
Hard - Asus eeePC 1000H 1 Gib / 160 Gb / 500 Gb USB -Intel Atom N270-32b-1.6 Ghz-CG:Intel 945GME Express Integrated rev 03 - Audio Intel N10/ICH 7 rev 02 Soft - Debian Squeeze stable, Gnome, eCryptfs > /home/users - Wxp->roue de secours


Dernière édition par Rantanplan aussi ! le 19 Nov 2011 03:30, édité 1 fois.

Haut
 Profil  
 
MessagePosté: 10 Nov 2011 19:58 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 02 Avr 2009 23:14
Messages: 419
Localisation: Paris
Tu peux mettre la redirection avant ou après la commande
ex
Code:
echo toto >/dev/null

est équivalent à
Code:
>/dev/null echo toto


Haut
 Profil  
 
MessagePosté: 10 Nov 2011 20:37 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 25 Oct 2011 15:33
Messages: 251
Localisation: 92 - Hauts de Seine
BBT1 a écrit:
Quelques remarques :

Rantanplan aussi ! a écrit:
... pour economiser de la place ...
http://www.debian-fr.org/pour-les-scripts-c-est-ici-t3548-250.html#p364870


Merci pour tes remarques ( elles sont bien utiles !) , j'étudie ça et je te dis ce que j'en pense, même si je suis déjà convaincu du bien fondé de 96,72% :mrgreen: d'entres elles, suite à une lecture rapide, sauf pour la strucure if ... fi dans le cas de trés peu d'instructions :think: , car je trouve que dans ce cas précis elle alourdie au contraire la lecture et ne facilite donc pas la compréhension du script.

Maintenant peut-être que des if-fi systématiques sont mieux pour des débutants,(edit:ou au contraire pour les "mangeurs" de code) je ne sais pas :? , mais moi je prefére de loin
Code:
[ condition ] && commande

à :
Code:
if condition ; then
commande
if

Quand il n'y a qu'une/deux commandes comme c'est le cas dans ce script

A part ça j'ai "survolé" pas mal de scripts intéressant + haut, faut que je vois certains dans le détails ya du job mais des récompenses à la clé je penses

Sinon j'aime bien les dragons moi ! :023 :mrgreen: :P )

_________________
Hard - Asus eeePC 1000H 1 Gib / 160 Gb / 500 Gb USB -Intel Atom N270-32b-1.6 Ghz-CG:Intel 945GME Express Integrated rev 03 - Audio Intel N10/ICH 7 rev 02 Soft - Debian Squeeze stable, Gnome, eCryptfs > /home/users - Wxp->roue de secours


Dernière édition par Rantanplan aussi ! le 19 Nov 2011 03:36, édité 1 fois.

Haut
 Profil  
 
MessagePosté: 10 Nov 2011 20:40 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 25 Oct 2011 15:33
Messages: 251
Localisation: 92 - Hauts de Seine
BBT1 a écrit:
Tu peux mettre la redirection avant ou après la commande
ex
Code:
echo toto >/dev/null

est équivalent à
Code:
>/dev/null echo toto

Ça je savais pas , thanks :P

_________________
Hard - Asus eeePC 1000H 1 Gib / 160 Gb / 500 Gb USB -Intel Atom N270-32b-1.6 Ghz-CG:Intel 945GME Express Integrated rev 03 - Audio Intel N10/ICH 7 rev 02 Soft - Debian Squeeze stable, Gnome, eCryptfs > /home/users - Wxp->roue de secours


Haut
 Profil  
 
MessagePosté: 11 Nov 2011 00:18 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 02 Avr 2009 23:14
Messages: 419
Localisation: Paris
Rantanplan aussi ! a écrit:
Maintenant peut-être que des if-fi systématiques sont mieux pour des débutants, je ne sais pas :? , mais moi je prefére de loin
Code:
[ condition ] && commande

à :
Code:
if condition ; then
commande
if


Je dis pas le contraire mais j'aime aussi la règle des 80 caractères (à l'ancienne quoi). D'autre part, quand tu parcours de grandes quantités de code, c'est pas mal de saisir la structure avec une lecture verticale, et donc proche de la marge (mais cette opinion est assez personelle).

Enfin pour ce cas là c'est vraiment une question de feeling.

Rantanplan aussi ! a écrit:
Sinon j'aime bien les dragons moi ! :023 :mrgreen: :P )


Ouais.
C'est cool les dragons.


Haut
 Profil  
 
MessagePosté: 11 Nov 2011 00:56 
En ligne
Administrateur du forum
Avatar de l’utilisateur

Inscription: 15 Oct 2004 01:13
Messages: 19016
Localisation: Périgord
BBT1 a écrit:
Rantanplan aussi ! a écrit:
Maintenant peut-être que des if-fi systématiques sont mieux pour des débutants, je ne sais pas :? , mais moi je prefére de loin
Code:
[ condition ] && commande

à :
Code:
if condition ; then
commande
[color=#0000FF][b]if[/b][/color]


Je dis pas le contraire mais j'aime aussi la règle des 80 caractères (à l'ancienne quoi). D'autre part, quand tu parcours de grandes quantités de code, c'est pas mal de saisir la structure avec une lecture verticale, et donc proche de la marge (mais cette opinion est assez personelle).

Enfin pour ce cas là c'est vraiment une question de feeling.

Rantanplan aussi ! a écrit:
Sinon j'aime bien les dragons moi ! :023 :mrgreen: :P )


Ouais.
C'est cool les dragons.

Moi aussi je préfère la seconde forme mais je touve que ça fonctionne mieux avec "fi" :lol:
Je pousse même le vice à déployer complètement :
Code:
if condition 
   then
   commande
fi

_________________
"L'action est plus efficace que la polémique, mais plus rare."
"Pas de Droite, pas de Gauche mais "ailleurs et partout", "Franchouillard" et même pas honte !
Ricardo (1936-...)


Haut
 Profil  
 
MessagePosté: 11 Nov 2011 02:30 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 25 Oct 2011 15:33
Messages: 251
Localisation: 92 - Hauts de Seine
@ BBT1

Oui, je suis assez d'accord avec ce que tu dis sur les habitudes et les règles, tu as bien fait de me dire ta façon de penser, que le script soit petit ou pas, ça donne un cadre (argumenté) plus général pour s'aventurer à écrire des scripts plus ambitieux.

J'ai fait un copier / coller de ton script aprés avoir sauvegardé le mien et les rep/fichier associés, puis j'ai testé.

Il a marché du premier coup :023 . J'ai ensuite supprimé le ${fichier_ip} pour faire des tests ( c'est incontournable à mon sens, sinon ...) et ça a planté sur le :
Code:
derniere_ip=$(tail -1 ~/${rep}/${fichier_ip}|cut -d' ' -f5)

normal, puisque le fichier n'existe pas.

J'ai modifié cette ligne en conséquence tout conservant l'esprit de tes modifs (parce qu'il est bon) comme ceci :
Code:
derniere_ip=$(tail -1 ~/${rep}/${fichier_ip} 2>/dev/null | sed 's/^.*[[:blank:]]\+//')

(j'ai aussi été obligé de remplacer le cut par un sed parce que le cut suivant ne fonctionne pas :
Code:
derniere_ip=$(tail -1 ~/${rep}/${fichier_ip} 2>/dev/null | cut -d'\t ' -f2)

mais ça m'est égal le sed me convient parfaitement. )

Donc pour résumer, la seule modif sur tes modifs est ceci :
Code:
derniere_ip=$(tail -1 ~/${rep}/${fichier_ip} 2>/dev/null | sed 's/^.*[[:blank:]]\+//')

J'ai aussi fait le test de supprimer le ${rep} --> pas de pb

J'ai testé tes :
Code:
echo "122.34.2" | egrep  '^([[:digit:]]+\.){3}[[:digit:]]+$';echo $?
1
echo "122.34.2.1" | egrep  '^([[:digit:]]+\.){3}[[:digit:]]+$';echo $?
122.34.2.1
0

directement sur le shell --> impeccable

Je ne connaissais pas cette manière de multiplier un test comme ça {3}, c'est bien commode ... sinon curl je connaissais pas vraiment ( faut que j'approfondisse ya de la matière )

Et oui ton :
Code:
sed 's|^.*>\(.*\)</td>$|\1|'

est bien joli par rapport au mien ( et beaucoup + lisible, pourtant je connaissais cette possibilité de changer / en | par exemple mais j'utilisais jamais ça ?)

Trés juste aussi la redirection des echo d'erreurs >&2 , en effet, si l'on redirige la sortie std du script, les erreurs iront tout de même sur la sortie d'erreur, ce qui n'aurait pas été le cas dans la première version que j'ai donné.

Trés bien aussi la modif des options de wget pour pouvoir filtrer directement sur stdout sans passer par un fichier intermédiaire (source de problèmes lors de sa suppression).

Voilà. Je laisse tourner tranquille 1 semaine et je modifierai mon post initial en conséquence. Edit: post initial modifié le 19/11/2011

Franchement BBT1 merci bien pour ce cours gratuit.

Yes cool are the Dragons :023

Notes : en fait c'est suite à la reception du mail suivant que j'ai eu l'idée de ce script, extrait :
SECUVAD a écrit:
[...] Nous vous rappelons quelques éléments techniques de votre connexion :

* le 26/06/2007 à 13:58:00 : Acceptation des CGV depuis l'adresse 'www.xxx.yyy.zzz'
* le 27/06/2010 à 00:02:00 : Reconduction Abo mensuel à 29,90€/mois après offre 1€ les 7 jours du 19/06/10 pour un montant de 29.90 EUR depuis l'adresse 'www.xxx.yyy.zzz'

À ce jour, vous êtes donc redevable à l'égard de la société SARL INTERNET MACHIN TRUC BIDULE d'une somme totale de :
- Principal : 29.00 EUR

En conséquence, et en application des dispositions de l'article 1139 du Code civil, nous vous mettons en demeure de régler sans délai la somme de 29.00 EUR.
[...]

On voit bien dans cet extrait qu'ils disent que j'avais la même IP à 3 ans d'interval (j'ai masqué les IP parce que c'est pas vraiment utile, mais c'était les mêmes), ce qui est débile avec l'offre Orange que j'avais.( j'ai changé le nom précis de la société en MACHIN TRUC BIBULE parce que bon ...)

Je me suis fait avoir, j'ai payé, mais on ne pourra plus m'affirmer que tel jour j'avais telle IP parce que si c'est pas vrai ... ça va pas ce passer comme ça :twisted:

_________________
Hard - Asus eeePC 1000H 1 Gib / 160 Gb / 500 Gb USB -Intel Atom N270-32b-1.6 Ghz-CG:Intel 945GME Express Integrated rev 03 - Audio Intel N10/ICH 7 rev 02 Soft - Debian Squeeze stable, Gnome, eCryptfs > /home/users - Wxp->roue de secours


Dernière édition par Rantanplan aussi ! le 23 Nov 2011 04:14, édité 3 fois.

Haut
 Profil  
 
MessagePosté: 11 Nov 2011 06:10 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 25 Oct 2011 15:33
Messages: 251
Localisation: 92 - Hauts de Seine
ricardo a écrit:
BBT1 a écrit:
Rantanplan aussi ! a écrit:
Maintenant peut-être que des if-fi systématiques sont mieux pour des débutants, je ne sais pas :? , mais moi je prefére de loin
Code:
[ condition ] && commande

à :
Code:
if condition ; then
commande
[color=#0000FF][b]if[/b][/color]


Je dis pas le contraire mais j'aime aussi la règle des 80 caractères (à l'ancienne quoi). D'autre part, quand tu parcours de grandes quantités de code, c'est pas mal de saisir la structure avec une lecture verticale, et donc proche de la marge (mais cette opinion est assez personelle).

Enfin pour ce cas là c'est vraiment une question de feeling.

Rantanplan aussi ! a écrit:
Sinon j'aime bien les dragons moi ! :023 :mrgreen: :P )


Ouais.
C'est cool les dragons.

Moi aussi je préfère la seconde forme mais je touve que ça fonctionne mieux avec "fi" :lol:
Je pousse même le vice à déployer complètement :
Code:
if condition 
   then
   commande
fi


Yes Ricardo ! :D ,

J'avais pas vu, je comprenais pas ton message depuis hier soir! ça y est j'ai compris :roll: :P !

_________________
Hard - Asus eeePC 1000H 1 Gib / 160 Gb / 500 Gb USB -Intel Atom N270-32b-1.6 Ghz-CG:Intel 945GME Express Integrated rev 03 - Audio Intel N10/ICH 7 rev 02 Soft - Debian Squeeze stable, Gnome, eCryptfs > /home/users - Wxp->roue de secours


Haut
 Profil  
 
MessagePosté: 11 Nov 2011 19:31 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 02 Avr 2009 23:14
Messages: 419
Localisation: Paris
ricardo a écrit:
Moi aussi je préfère la seconde forme mais je touve que ça fonctionne mieux avec "fi" :lol:
Je pousse même le vice à déployer complètement :
Code:
if condition 
   then
   commande
fi


Bof. Le then tout seul sur sa ligne n'apporte pas grand chose, il est sous-entendu par le if et encombre le bloc de commandes déjà facilement repérable par l'indentation de la ligne.

Pour moi, c'est une ligne perdue.


Haut
 Profil  
 
MessagePosté: 11 Nov 2011 20:04 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 02 Avr 2009 23:14
Messages: 419
Localisation: Paris
Rantanplan aussi ! a écrit:
J'ai ensuite supprimé le ${fichier_ip} pour faire des tests ( c'est incontournable à mon sens, sinon ...) et ça a planté sur le :
Code:
derniere_ip=$(tail -1 ~/${rep}/${fichier_ip}|cut -d' ' -f5)

normal, puisque le fichier n'existe pas.

Ah. Normalement l'erreur aurait dû être silencieuse et ne pas arrêter l'exécution de script (c'est crade, mais je voulais rester le plus possible dans l'idée du script original pour mes remarques).

En fait, on aurait pu faire un
Code:
if [ -f "$fichier_ip" ]; then
  derniere_ip=$(tail -1 ~/${rep}/${fichier_ip}|cut -d' ' -f5)
else
  derniere_ip=none
fi

if [ $derniere_ip != $ip ]; then
  echo -e "$date_jour\\t$ip" >> ~/${rep}/${fichier_ip}
fi


Rantanplan aussi ! a écrit:
J'ai modifié cette ligne en conséquence tout conservant l'esprit de tes modifs (parce qu'il est bon) comme ceci :
Code:
derniere_ip=$(tail -1 ~/${rep}/${fichier_ip} 2>/dev/null | sed 's/^.*[[:blank:]]\+//')

(j'ai aussi été obligé de remplacer le cut par un sed parce que le cut suivant ne fonctionne pas :
Code:
derniere_ip=$(tail -1 ~/${rep}/${fichier_ip} 2>/dev/null | cut -d'\t ' -f2)

mais ça m'est égal le sed me convient parfaitement. )


C'est parce que tu as donné 2 caractères à l'option -d de cut (qui par défaut prend la tabulation ;) )

Rantanplan aussi ! a écrit:
Franchement BBT1 merci bien pour ce cours gratuit.

Yes cool are the Dragons :023

N'hésite pas à partager tes astuces et autres "trouvailles" de bash sur le topic, même si je suis des fois occupé j'ai toujours un œuil sur le topic.

Rantanplan aussi ! a écrit:
Notes : en fait c'est suite à la reception du mail suivant que j'ai eu l'idée de ce script, extrait :
SECUVAD a écrit:
[...] Nous vous rappelons quelques éléments techniques de votre connexion :

* le 26/06/2007 à 13:58:00 : Acceptation des CGV depuis l'adresse 'www.xxx.yyy.zzz'
* le 27/06/2010 à 00:02:00 : Reconduction Abo mensuel à 29,90€/mois après offre 1€ les 7 jours du 19/06/10 pour un montant de 29.90 EUR depuis l'adresse 'www.xxx.yyy.zzz'

À ce jour, vous êtes donc redevable à l'égard de la société SARL INTERNET MACHIN TRUC BIDULE d'une somme totale de :
- Principal : 29.00 EUR

En conséquence, et en application des dispositions de l'article 1139 du Code civil, nous vous mettons en demeure de régler sans délai la somme de 29.00 EUR.
[...]

On voit bien dans cet extrait qu'ils disent que j'avais la même IP à 3 ans d'interval (j'ai masqué les IP parce que c'est pas vraiment utile, mais c'était les mêmes), ce qui est débile avec l'offre Orange que j'avais.( j'ai changé le nom précis de la société en MACHIN TRUC BIBULE parce que bon ...)

Je me suis fait avoir, j'ai payé, mais on ne pourra + m'affirmer que tel jour j'avais tel IP parce que si c'est pas vrai ... ça va pas ce passer comme ça :twisted:

Légalement, les données enregistrées par ton script ne valent rien.


Haut
 Profil  
 
MessagePosté: 11 Nov 2011 20:23 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 25 Oct 2011 15:33
Messages: 251
Localisation: 92 - Hauts de Seine
BBT1 a écrit:
ricardo a écrit:
Moi aussi je préfère la seconde forme mais je touve que ça fonctionne mieux avec "fi" :lol:
Je pousse même le vice à déployer complètement :
Code:
if condition 
   then
   commande
fi


Bof. Le then tout seul sur sa ligne n'apporte pas grand chose, il est sous-entendu par le if et encombre le bloc de commandes déjà facilement repérable par l'indentation de la ligne.

Pour moi, c'est une ligne perdue.


Oui c'est une ligne perdue, mais l'important c'est que Ricardo puisse satisfaire ses vices :lol:

Perso je trouve que même le then ne sert à rien (comme tu le sous-entendais) :
Code:
if condition_1
   action_1 ; action_2
   action_3
elif condition_2 ;action_21 ; action_22
   action_23
else echo "vive toto"
fi

m'irai trés bien
Ciao :P

_________________
Hard - Asus eeePC 1000H 1 Gib / 160 Gb / 500 Gb USB -Intel Atom N270-32b-1.6 Ghz-CG:Intel 945GME Express Integrated rev 03 - Audio Intel N10/ICH 7 rev 02 Soft - Debian Squeeze stable, Gnome, eCryptfs > /home/users - Wxp->roue de secours


Dernière édition par Rantanplan aussi ! le 19 Nov 2011 04:03, édité 1 fois.

Haut
 Profil  
 
MessagePosté: 11 Nov 2011 21:50 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 25 Oct 2011 15:33
Messages: 251
Localisation: 92 - Hauts de Seine
BBT1 a écrit:
Ah. Normalement l'erreur aurait dû être silencieuse et ne pas arrêter l'exécution de script (c'est crade, mais je voulais rester le plus possible dans l'idée du script original pour mes remarques).

En fait je me suis trompé : l'erreur n'arrêtait pas l'exécution du script et l'IP était bien écrite dans le fichier (créé à la dernière ligne du script), puis l'exécution s'arrêtait normalement.C'est juste le message d'erreur de tail qui s'affichait. Ça ne se serait produit qu'à la première exec du script --> vraiment acceptable je trouve, même si pas trés clean (si on touche le même salaire à la fin du mois, hein :033 )

Ensuite je suis d'accord avec ta solution alternative, ça marche trés bien mais je vais rester comme c'est actuellement : ça me plait bien ! :P

Pour le cut, c'est vrai qu'un espace s'est introduit je ne sais comment ? l'erreur est sûrement entre la chaise et le clavier comme on dit :mrgreen:

Mais ça ne marche pas, sous la forme que j'essayais :
Code:
echo -e "J'adore\tles\tlasagnes\tà\tla\tbolognaise"
J'adore   les   lasagnes   à   la   bolognaise

echo -e "J'adore\tles\tlasagnes\tà\tla\tbolognaise"|cut -d'\t' -f1
cut: le délimiteur doit être un caractère simple
Saisissez « cut --help » pour plus d'informations.

echo -e "J'adore\tles\tlasagnes\tà\tla\tbolognaise"|cut -f1
J'adore

Ouais ! j'adore apprendre des trucs, thanks BBT1 :023
BBT1 a écrit:
N'hésite pas à partager tes astuces et autres "trouvailles" de bash sur le topic, même si je suis des fois occupé j'ai toujours un œuil sur le topic.

Okay :P j'en ai qques autres que je trouve indispensables (pour moi avec ma façon de fonctionner) qui sont pas bien gros ni compliqués !

Pour le moment je vais digérer ce que j'ai appris, j'ai autre script que je dois absolument terminer parce que ça me fera gagner qques secondes par jour (ça n'a l'air de rien mais c'est tjs ça de pris et de l'aggacement en moins au quotidien: ça vaut le coup :P )
BBT1 a écrit:
Légalement, les données enregistrées par ton script ne valent rien.

Oui, je sais bien. Ce qui est important pour moi c'est de savoir si en face ils ont les bonnes billes ou pas (ensuite déterminer s'ils font erreur ou s'ils sont de mauvaise foi est une autre étape). Si il y a erreur ou tentative d'escroquerie, alors je pourrais demander à mon FAI de me fournir mes IP aux dates correspondantes, ce serait sûrement payant mais si c'est la condition pour remporter la bataille je m'y résoudrai. Quitte à demander des dommages et intérêts ensuite, pour me rembourser et aller manger des coquilles St Jacques à leur frais :033 , histoire de tourner la page agréablement

Encore merci BBT1 :023

_________________
Hard - Asus eeePC 1000H 1 Gib / 160 Gb / 500 Gb USB -Intel Atom N270-32b-1.6 Ghz-CG:Intel 945GME Express Integrated rev 03 - Audio Intel N10/ICH 7 rev 02 Soft - Debian Squeeze stable, Gnome, eCryptfs > /home/users - Wxp->roue de secours


Haut
 Profil  
 
MessagePosté: 22 Déc 2011 16:02 
Hors ligne
Très bavard(e)!

Inscription: 29 Juil 2009 19:11
Messages: 289
BBT1 a écrit:
Tu peux mettre la redirection avant ou après la commande
ex
Code:
echo toto >/dev/null

est équivalent à
Code:
>/dev/null echo toto

En fait, la redirection peut se trouver n'importe ou dès lors qu'elle n'est pas protégée. Il est même possible d'en avoir plusieurs pour la même entrée :
Code:
echo >/dev/null "Qui pensait que >/dev/null s'afficherait sur $(tty) ?" # n'affiche rien
echo Qui pensait que >/dev/null s\'afficherait sur $(tty) ? # n'affiche rien
echo Qui pensait que >/dev/null s\'afficherait sur >$(tty) ? # 2 redirections, c'est la dernière qui prime


Haut
 Profil  
 
MessagePosté: 08 Jan 2012 02:47 
Hors ligne
Très bavard(e)!

Inscription: 29 Juil 2009 19:11
Messages: 289
Bonjour,

Ayant eu besoin de mettre à disposition des fichiers à un pote je lui ai donc créer un compte et lui ai permis de se connecter à ma machine via sftp. Cependant, en l'état, il pouvait accéder à d'autres fichiers de ma machine.

Dans un premier temps, j'ai pensé modifier les permissions mais cela ne changeait rien car l'une de mes arborescences est montée en cifs (dont le type de la partition est NTFS). Je n'arrivais pas à changer les permissions (ou alors, je m'y suis mal pris). Je me suis donc penché sur chroot qui permet de créer un environnement limité et surtout isolé à l'arborescence « chrooté ».

Le problème d'un tel environnement est qu'il faille y mettre tout ce que l'on a besoin. Si l'on veut utiliser un shell, il faut y ajouter le shell, si l'on veut lister un répertoire, il faut y ajouter la commande ls etc... Mais « ajouter » ne signifie pas seulement « copier le binaire » : il faut également y ajouter toutes les librairies dynamiques utilisées par le programme. Et ce n'est pas une mince affaire. Ces librairies sont identifiables via l'instruction ldd mais il arrive que l'utilisation de ldd ne suffise pas. On s'en aperçoit lors de leur utilisation dans l'environnement « chrooté ». J'en ai fait les frais pour « zsh » (je ne me suis pas encore penché sur la problématique mais il le faudrait dans le but de recenser la totalité des dépendances...)

De même, un tel environnement a besoin à minima des devices « null » et « zero ».

La création d'un tel environnement peut donc être long et délicat. M'y étant pris à plusieurs reprises, j'ai produit un script en zsh (*) permettant la création ou la modification (ajout de devices, librairies, programmes) d'un environnement « chrooté ».

Le voici (**) :
Code:
#!/bin/zsh -y

myName="${0##*/}"

# Affiche un message d'erreur formaté
showError()
{
   # on affiche sur la sortie d'erreur
   exec >&2

   myDate="$(date +'%T %d/%m/%Y')"
   
   # le statut est en 1er paramétre
   statut=$1
   shift
   # formatage de l'affichage de l'erreur
   erreur="$(printf "%s\n\t" "$@")"

   cat <<EO_ERROR
${myDate} - Erreur : ${erreur%$'\n'*}
Satut : ${statut}
EO_ERROR

   exit ${statut}
}

# Affiche de l'aide du script
showHelp()
{
   # on affiche sur la sortie d'erreur
   exec >&2

   cat << EO_HELP
Usage : ${myName} [ -v ] -d dossier [-p prog[,...]] [-d device[,...]] [ -f dossier[,...]] [ -l librairie[,...]]
   -d : Dossier chroot. Il est créé si inexistant, sinon vérifié et corrigé.
   -p : Liste des programmes à ajouter à l'arborescence.
   -d : Liste des devices à créer dans /dev en plus des devices "null" et "zero".
   -f : Liste des dossiers à ajouter à l'arbrescence en plus de bin, dev, lib, lib32 et lib64 en cas d'architecture x86_64.
   -l : Liste des librairies à ajouter à l'arborescence.
   -v : Mode verbeux

  Liste : Chaque élement d'une liste est séparé par une ",".
   prog : Chemin complet d'un programme. Les librairies dynamique du programme seront ajoutées au chroot.
device : Un device est donné sous la forme "nom type <MINEUR> <MAJEUR>". Le masque appliqué est 666.
dossier : Le nom du ossier est à donner sans le dossier chroot.
EO_HELP

   (( $# > 0 )) && showError "${@}"
}

# Affiche d'un message d'information formaté
showInfo()
{
   ${verbeux} && {
      myDate="$(date +'%T %d/%m/%Y')"
      infos="$(printf "%s\n\t" "$@")"
      printf "${myDate} : %s" "${infos%$'\t'}"
   }
}

# Vérification des paramétres envoyés au script
checkParams()
{
   # on précise le séparateur pour les liste
   local IFS=","

   # par défaut, pas de dossier chroot
   folderChroot=""
   devices=( "null c 1 3" "zero c 1 5" )

   _folders=()
   progs=()
   libraries=()
   verbeux=false

   # Analyse des paramètres
   while getopts :r:p:l:d:f:v option
   do
      case ${option} in
         \?) showHelp 2 "Valeur manquante pour l'option ${OPTARG}.";;
         :) showHelp 2 "Option non valide : ${OPTARG}.";;
         f) _folders=( ${=OPTARG} );;
         l) libraries=( ${=OPTARG} );;
         p) progs=( ${=OPTARG} );;
         r) folderChroot="${OPTARG%/}/";;
         d) devices+=( ${=OPTARG} );;
         v) verbeux=true;
      esac
   done

   # si pas de chroot --> erreur
   [[ -z "${folderChroot}" ]] && showHelp  2 "Option manquante : dossier chroot !"

   # Liste des dossiers par défaut
   folders=( "${folderChroot}"
      "${folderChroot}bin"
      "${folderChroot}dev"
      "${folderChroot}lib"
      "${folderChroot}lib32"
      )
   # si 64bits, on ajoute lib64
   [[ "$(uname -m)" == "x86_64" ]] && folders+=( "${folderChroot}lib64/" )
   
   # on rajoute la liste des dossiers demandés
   (( ${#_folders[@]} > 0 )) && folders+=( "${_folders[@]/#/${folderChroot}}" )
   
   # on positionne un / à la fin de chacun des dossiers
   folders=( "${folders[@]%/}" )
   folders=( "${folders[@]/%//}" )
}

# Recherche le fichier cible d'un lien
myReadLink()
{
   file="$1"
   while [ -h "${file}" ]; do
      file="$(readlink "${file}")"
   done
   echo "${file}"
}

# Copie d'un fichier dans le dossier chroot
copyFile()
{
   # fichier à copier
   file="$1"
   # fichier pointé par $1
   linkedFile="$(myReadLink "${file}")"
   # nom du fichier
   fileName="${file##*/}"

   # détermination du dossier cible
   destFolder="${folderChroot%/}$(cd "$(dirname "${file}")";pwd)/"

   # si dossier cible n'existe pas, on le créé
   [ ! -d "${destFolder}" ] && {
      showInfo "Création du dossier cible ${destFolder}"
      error="$(mkdir -p "${destFolder}"2>&1)"
      statut=$?
      
      if ((statut == 0)); then
         showInfo "Création OK."
      else
         showInfo "Erreur lors de la création !"
         showError ${statut} "${error}"
      fi
   }
   
   # copie du fichier
   showInfo "Copie de ${file} (${linkedFile}) vers ${destFolder}${fileName}..."
   error="$(cp ${file} "${destFolder}${fileName}" 2>&1)"
   statut=$?
   
   if ((statut == 0)); then
      showInfo "Copie OK."
   else
      showInfo "Erreur lors de la copie !"
      showError ${statut} "${error}"
   fi
}

# procédure de vérification et de création des dossiers
checkFolders()
{
   showInfo "Traitement des dossiers..."
   for folder in "${folders[@]}"
   do
      showInfo "Vérification du dossier ${folder}..."
      [ -d "${folder}" ] && showInfo "Le dossier existe." || {
         showInfo "Le dossier n'existe pas -> création"
         error="$(mkdir -p "${folder}" 2>&1)"
         statut=$?

         if ((statut == 0)); then
            showInfo "Création OK."
         else
            showInfo "Erreur lors de la création !"
            showError ${statut} "${error}"
         fi
      }
      
      showInfo 'Changement de propriétaire à "root:root":'
      error="$(chown root:root -R "${folder}" 2>&1)"
      statut=$?
      
      if ((statut == 0)); then
         showInfo "Changement OK."
      else
         showInfo "Erreur de changement de propriétaire !"
         showError ${statut} "${error}"
      fi
      
      showInfo 'Changement des droits à "755" :'
      error="$(chmod -R 755 "${folder}" 2>&1)"
      statut=$?
      
      if ((statut == 0)); then
         showInfo "Changement OK."
      else
         showInfo "Erreur de changement des droits !"
         showError ${statut} "${error}"
      fi
   done
   showInfo "Fin de traitement des dossiers."
}

# procédure de création des devices
checkDevices()
{
   showInfo "Traitement des devices..."
   folderDevice="${folderChroot}dev/"
   for device in "${devices[@]}"
   do
      read -A <<< ${device}
      
      deviceName="${folderDevice}${reply[1]}"
      showInfo "Vérification du device ${deviceName}..."
      
      
      if [ -e "${deviceName}" ]; then
         [ -c "${deviceName}" ] ||  showError 2 "Le fichier existe mais il ne s'agit pas d'un device !"
         showInfo "Le device existe."
      else
         showInfo "Le device n'existe pas -> création"
         error="$(mknod ${deviceName} ${=device#* } -m 666 2>&1)"
         statut=$?

         if ((statut == 0)); then
            showInfo "Création OK."
         else
            showInfo "Erreur lors de la création !"
            showError ${statut} "${error}"
         fi
      fi

      showInfo 'Changement de propriétaire à "root:root":'
      error="$(chown root:root "${deviceName}" 2>&1)"
      statut=$?
      
      if ((statut == 0)); then
         showInfo "Changement OK."
      else
         showInfo "Erreur de changement de propriétaire !"
         showError ${statut} "${error}"
      fi
   done
   showInfo "Fin de traitement des devices."
}

# procédure d'ajout des programmes dans l'arbo chroot
addPrograms()
{
   showInfo "Traitement des programmes..."
   for prog in "${progs[@]}"
   do
      showInfo "Vérification de ${prog}..."
      [ -f "${prog}" ] || showError 2 "Le programme ${prog} n'existe pas !"
      
      # est-ce un lien symbolique, auquel cas il faut rechercher la cible
      file="$(myReadLink "${prog}")"
      progName="${prog##*/}"         
      [ -h "${prog}" ] && showInfo "Fichier cible trouvé : ${file}"
      
      copyFile "${prog}"
      
      # traitement des librairies
      while read -A
      do
         case ${#reply} in
            2) # librarie externe à /lib trouvée
               showInfo "Librairie externe à /lib trouvée : ${reply[1]}"
               copyFile "${reply[1]}";;

            3) # librairie interne
               showInfo "Librairie interne à ${progName} trouvée : ${reply[1]}";;

            4) # librairie du dossier /lib
               showInfo "Librairie trouvée : ${reply[1]} -> ${reply[3]}"               
               copyFile "${reply[3]}";;

            *) showError 2 "Type de librairie inconnue : ${reply[@]}";;
         esac
      done < <(ldd "${file}")
   done
   (( ${#progs[@]} == 0 )) && showInfo "Aucun programe." || showInfo "Fin de traitement des programmes."
}

# procédure d'ajout des librairies supplémentaires
addLibraries()
{
   showInfo "Traitement des librairies..."
   for lib in "${libraries[@]}"
   do
      copyFile "${lib}"
   done
   (( ${#libraries[@]} == 0 )) && showInfo "Aucune librairie." || showInfo "Fin de traitement des librairies."
}

(( $(id -u) > 0 )) && showError 1 "Vous devez être root pour lancer ${myName} !"

checkParams "$@"

# vérification des dossiers
checkFolders

# vérification des devices
checkDevices

# ajout des programmes
addPrograms

# ajout des librairies
addLibraries


Pour l'utiliser :
Citation:
Usage : mkchroot.zsh [ -v ] -d dossier [-p prog[,...]] [-d device[,...]] [ -f dossier[,...]] [ -l librairie[,...]]
-d : Dossier chroot. Il est créé si inexistant, sinon vérifié et corrigé.
-p : Liste des programmes à ajouter à l'arborescence.
-d : Liste des devices à créer dans /dev en plus des devices "null" et "zero".
-f : Liste des dossiers à ajouter à l'arbrescence en plus de bin, dev, lib, lib32 et lib64 en cas d'architecture x86_64.
-l : Liste des librairies à ajouter à l'arborescence.
-v : Mode verbeux

Liste : Chaque élement d'une liste est séparé par une ",".
prog : Chemin complet d'un programme. Les librairies dynamiques du programme seront ajoutées au chroot.
device : Un device est donné sous la forme "nom type <MINEUR> <MAJEUR>". Le masque appliqué est 666.
dossier : Le nom du ossier est à donner sans le dossier chroot.


Pour exemple :
Code:
% set -y; libs="$(printf "%s," /usr/lib/zsh/4.3.12/zsh/*.so )"
% sudo ls -l /chroot
ls: impossible d'accéder à /chroot: Aucun fichier ou dossier de ce type
% sudo bin/mkchroot.zsh -r /chroot -d 'tty c 5 0,urandom c 1 9' -p /bin/ls,/bin/cp,/bin/zsh -l${libs%,}
% find /chroot                                                                                           
/chroot
/chroot/lib
/chroot/lib/libcap.so.2
/chroot/lib/x86_64-linux-gnu
/chroot/lib/x86_64-linux-gnu/libpthread.so.0
/chroot/lib/x86_64-linux-gnu/libncursesw.so.5
/chroot/lib/x86_64-linux-gnu/2
/chroot/lib/x86_64-linux-gnu/librt.so.1
/chroot/lib/x86_64-linux-gnu/libtinfo.so.5
/chroot/lib/x86_64-linux-gnu/libm.so.6
/chroot/lib/x86_64-linux-gnu/libselinux.so.1
/chroot/lib/x86_64-linux-gnu/libdl.so.2
/chroot/lib/x86_64-linux-gnu/libattr.so.1
/chroot/lib/x86_64-linux-gnu/libacl.so.1
/chroot/lib/x86_64-linux-gnu/libc.so.6
/chroot/dev
/chroot/dev/urandom
/chroot/dev/zero
/chroot/dev/tty
/chroot/dev/null
/chroot/usr
/chroot/usr/lib
/chroot/usr/lib/zsh
/chroot/usr/lib/zsh/4.3.12
/chroot/usr/lib/zsh/4.3.12/zsh
/chroot/usr/lib/zsh/4.3.12/zsh/termcap.so
/chroot/usr/lib/zsh/4.3.12/zsh/zutil.so
/chroot/usr/lib/zsh/4.3.12/zsh/computil.so
/chroot/usr/lib/zsh/4.3.12/zsh/system.so
/chroot/usr/lib/zsh/4.3.12/zsh/files.so
/chroot/usr/lib/zsh/4.3.12/zsh/clone.so
/chroot/usr/lib/zsh/4.3.12/zsh/rlimits.so
/chroot/usr/lib/zsh/4.3.12/zsh/attr.so
/chroot/usr/lib/zsh/4.3.12/zsh/mapfile.so
/chroot/usr/lib/zsh/4.3.12/zsh/2
/chroot/usr/lib/zsh/4.3.12/zsh/parameter.so
/chroot/usr/lib/zsh/4.3.12/zsh/zleparameter.so
/chroot/usr/lib/zsh/4.3.12/zsh/terminfo.so
/chroot/usr/lib/zsh/4.3.12/zsh/stat.so
/chroot/usr/lib/zsh/4.3.12/zsh/newuser.so
/chroot/usr/lib/zsh/4.3.12/zsh/langinfo.so
/chroot/usr/lib/zsh/4.3.12/zsh/example.so
/chroot/usr/lib/zsh/4.3.12/zsh/pcre.so
/chroot/usr/lib/zsh/4.3.12/zsh/mathfunc.so
/chroot/usr/lib/zsh/4.3.12/zsh/compctl.so
/chroot/usr/lib/zsh/4.3.12/zsh/deltochar.so
/chroot/usr/lib/zsh/4.3.12/zsh/zftp.so
/chroot/usr/lib/zsh/4.3.12/zsh/cap.so
/chroot/usr/lib/zsh/4.3.12/zsh/complist.so
/chroot/usr/lib/zsh/4.3.12/zsh/zselect.so
/chroot/usr/lib/zsh/4.3.12/zsh/curses.so
/chroot/usr/lib/zsh/4.3.12/zsh/zprof.so
/chroot/usr/lib/zsh/4.3.12/zsh/regex.so
/chroot/usr/lib/zsh/4.3.12/zsh/zle.so
/chroot/usr/lib/zsh/4.3.12/zsh/datetime.so
/chroot/usr/lib/zsh/4.3.12/zsh/complete.so
/chroot/usr/lib/zsh/4.3.12/zsh/sched.so
/chroot/usr/lib/zsh/4.3.12/zsh/zpty.so
/chroot/lib32
/chroot/bin
/chroot/bin/ls
/chroot/bin/zsh
/chroot/bin/cp
/chroot/lib64
/chroot/lib64/ld-linux-x86-64.so.2


enjoy !

* : j'ai volontairement choisi cet interpréteur car il a tout (bien plus même) pour remplacer bash, sh ou ksh.
cela dit, je le connais à peine mais le peu que je puisse constater me fait penser qu'il mérite beaucoup mieux que la place qu'il occupe aux rangs des intérpréteurs.

** : ce script n'a pas pour vocation de configurer sftp ou autre (c'est un autre sujet)


Dernière édition par Totor le 08 Jan 2012 18:56, édité 1 fois.

Haut
 Profil  
 
MessagePosté: 08 Jan 2012 17:28 
Hors ligne
Modérateur du forum
Avatar de l’utilisateur

Inscription: 18 Juil 2007 17:57
Messages: 6901
Localisation: Grenoble
Sympa ton script :)

Pour le cas particulier de fournir un accès à un shell sur un serveur limité, il y a lshell que j'aime bien.

Personnellement c'est pour permettre à des amis de créer un tunnel vers mon serveur. Je n'autorise que quelques commandes.

_________________
Je suis Pitta, cartésien, irritable, irritant et névrosé (de plus je fais de l'entrisme pour zsh), si l'un de mes messages vous insupporte essayez d'y voir de l'ironie ou de ne pas en tenir compte. Bonne journée et gardez le sourire. :)


Haut
 Profil  
 
MessagePosté: 08 Jan 2012 18:58 
Hors ligne
Très bavard(e)!

Inscription: 29 Juil 2009 19:11
Messages: 289
Ah bah je vais regarder lshell car je rencontre des difficultés à metre en place à la fois le transfert (sftp) et la connexion "remote login" via ssh.


Haut
 Profil  
 
MessagePosté: 31 Jan 2012 15:30 
Hors ligne
Administrateur du forum
Avatar de l’utilisateur

Inscription: 17 Fév 2006 12:20
Messages: 15345
Localisation: Ile de France
2 petits scripts qui se sont révélés très pratiques utilisés conjointement:

Le premier (doqueue) très simple exécute une suite de commande dans un fichier:

Code:
#!/bin/sh
if [ -z $1 ] ; then
    QUEUE=/tmp/queue
else
    QUEUE=$1
fi
INSTRUCTION="go"
while [ -n "$INSTRUCTION" ] ; do
    INSTRUCTION=`head -n 1 $QUEUE`
    tail -n +2 $QUEUE > ${QUEUE}.old
    mv ${QUEUE}.old $QUEUE
    $INSTRUCTION
done

$ doqueue queue exécutera les commandes du fichier queue.
On peut noter qu'il est possible de modifierfier le fichier queue alors même que le programme s'éxécute.

Le deuxième (doqueuepara) fait la même chose mais en parallèle:
Code:
#!/bin/sh
DELAI=10
PIDS=""
if [ -z $1 ] ; then
    QUEUE=/tmp/queue
else
    QUEUE=$1
fi
INSTRUCTION="go"
OUT=1
while [ -n "$INSTRUCTION" ] ; do
    INSTRUCTION=`head -n 1 $QUEUE`
    tail -n +2 $QUEUE > ${QUEUE}.old
    mv ${QUEUE}.old $QUEUE
    $INSTRUCTION > /tmp/out-$OUT 2>&1 &
    PIDS=$PIDS" "$!
    OUT=$[$OUT+1]
done
CONT="go"
while [ -n "$CONT" ] ; do
    INSTRUCTION=`head -n 1 $QUEUE`
    if [ -n "$INSTRUCTION" ] ; then
   while [ -n "$INSTRUCTION" ] ; do
       INSTRUCTION=`head -n 1 $QUEUE`
       tail -n +2 $QUEUE > ${QUEUE}.old
       mv ${QUEUE}.old $QUEUE
       $INSTRUCTION > /tmp/out-$OUT 2>&1 &
       PIDS=$PIDS" "$!
       OUT=$[$OUT+1]
   done
    fi
    CONT=""
    for i in $PIDS ; do
   CONT=$CONT`ps -p $i  -o comm=`
    done
    sleep $DELAI
done

doqueuepara queue exécute en parallèle toutes les commandes du fichier queue donné en argument. Tant que toutes les commandes ne sont pas achevées, il est possible d'en rajouter, elles démarreront immédiatement. Les sorties sont dans des fichiers /tmp/out-???

Cela est pratique pour faire des encodages de video.
Fichier queue
Code:
doqueuepara queuepara
sudo pm-hibernate

Fichier queuepara fait au fur et à mesure contient des compilations ou encodages video par exemple, on les rajoute au fur et à mesure que les fichiers sont prêts. Puis on part et lorsque tout est fini, le PC se met en veille. Ces deux petits scripts idiots se sont finalement révélés très pratiques à l'usage d'où cette communication.

edit: modification suite aux remarques ci dessous, rajout d'un DELAI pour minimiser l'impact sur les performances.

_________________
Debian Squeeze amd64 Linux version 2.6.30-1
Le Dell 1525N a pété après 19 mois, Toshiba A500D Intel Core 2 Duo 4G RAM
Carte Nvidia, XFCE avec compiz (ben si...)

2 mains de 5 doigts chacune, une tête plus options usuelles


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 285 messages ]  Aller à la page Précédente  1 ... 8, 9, 10, 11, 12  Suivante

Index du forum » Forums d'aide » Trucs et Astuces


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Aller à:  
Flux RSS Flux RSS Liste des flux Liste des flux
Powered by phpBB® Forum Software © phpBB Group
Traduction par: phpBB-fr.com
SEO
[ Time : 0.786s | 11 Queries | GZIP : Off ]