PyReX
bonjour j'aimerai incorporé un traceroute ds un script mais il me faudrait une sorte de prompt pour lui donner une ip mais je ne connais pas la commande et pas moyen de trouver..
#! /bin/tcsh
# Variables
set trait = "------"
set message1 = "IP"
set message2 = "Traceroute"
set traceroute = "traceroute"
# Script
echo $trait
echo $message1
echo $trait
$traceroute
echo $trait
echo $message2
echo $trait
# End
si qqun sait comment lui donner l'ip je suis preneur
merci
celmir
#lire une valeur au clavier.
read ip
#passage de la valeur à traceroute
traceroute $ip
tu peux boucler avec une boucle while (tant que) ou until (jusqu'à ce que) :
while true
do
echo "tracer l'ip suivante : "
read ip
traceroute $ip
done
🙂
PyReX
Tout d'abord merci pour ta réponse
voila ce que ça donne selon tes indications (si j'ai bien compris, désolé je debute, d'ailleur si t'a de la doc sur les scripts shell)
#! /bin/tcsh
# Variables
set trait = "------"
set message1 = "IP"
set message2 = "Traceroute"
set traceroute = "traceroute"
set IP = "read ip"
# Script
echo $trait
echo $message1
echo $trait
$IP
$traceroute $IP
echo $trait
echo $message2
echo $trait
# End
Donc bon il reconnait pas la variable read
------
read: Commande introuvable.
traceroute: "ip" bad value for packet length
------
merci
valhalla
Ben tu utilises tcsh et non bash:
#! /bin/tcsh
Pour l'aide sur tcsh (et donc les scripts):
man tcsh
Pour lire une variable depuis le clavier avec tcsh:
set a = $<
a contient ensuite ce que tu as saisi.
A+ et bonne chance
PyReX
voila j'ai fini mon script, mais les plus aguerrit trouverons certainement des choses a rajouté (c'est mon 1e script soyez indulgent)
Donc si certains veulent bien le tester et me faire des remarques 😃 :
#! /bin/sh
# script by PyReX
clear
echo " "
echo " "
echo "Whois, Ping & Traceroute d'une ip ou d'un host"
echo " "
echo " ------------------------- "
echo " ------------------------- "
echo " "
echo "Veuillez me donner l'IP de la personne s'il vous plait $who :"
read ip
echo "l'ip tracée est $ip"
echo " "
echo " ------------------------- "
echo " ------------------------- "
echo " "
echo "Whois en cours..."
whois $ip
echo " "
echo " ------------------------- "
echo " ------------------------- "
echo " "
echo "Ping en cours"
ping -c 10 $ip
echo " "
echo " ------------------------- "
echo " ------------------------- "
echo " "
echo "traceroute en cours..."
traceroute -m 10 $ip
echo " "
echo " ------------------------- "
echo " ------------------------- "
echo " "
echo "L'ip $ip a été scannée avec succés"
echo "A bientot $who"
echo " ------------------------- "
echo " ------------------------- "
echo " "
#Fin du script
nemoi
Je remplacerai les:
echo " "
echo " ------------------------- "
echo " ------------------------- "
echo " "
par des:
echo '
-------------------------
-------------------------
'
... mais vraiment ça ne sert à rien.
valhalla
Moi j'aurai donné l'ip en agument 😉
mOOx
valhalla a écrit:
Moi j'aurai donné l'ip en agument 😉
moi aussi 🙂
PyReX
et comment on fait ça?
nan parce que j'ai envie d'apprendre et d'assimiler le max de commandes d'ailleur si vous avez de la doc, ou meme que vous connaissez des langages de programmation similaire n'hesitez pas.
merci a tous
valhalla
Tu peux utiliser les variables $1, $2, ... $n qui correspondent au n ieme argument. Exemple: ./test 1 2 3
$1 = 1
$2 = 2
$3 = 3
La variables $# contient le nombre de parametres. Dans l'exemple precedent, $#=3
Une bonne aide:
man bash
🙂
A+
celmir
tu devrais utiliser des fonctions pour éviter de taper 10 fois la même chose ...
si tu veux faire du shell script, je te conseille de regarder awk qui est une commande ultra puissante ...
un exemple :
http://www.info.univ-angers.fr/aides/tutawk.html
nemoi
Oh! Merci, un tuto court et complet pour awk! J'en rêvais...
PyReX
pour les arguments j'essaye de comprendre mais a vient pas, je ne sais pas commentles utiliser, si qqun pe mettre un petit bou de code de A a Z pour m'expliquer a serait sympa!!
merci
celmir
Va voir ces liens :
http://www.shellunix.com/
http://users.sdsc.edu/~steube/Bshell/
Pour les fonctions, voici la syntaxe :
#décalration :
nom_fonction()
{
commandes
}
#utilisation :
nom_fonction()
comme ca tu peux éviter de taper 10 fois la meme chose, et structurer un shell script complexe.
PyReX
pour les arguments il y a pas une histoire avec $1,$2,$3 etc...
donc admetons que je fasse un petit traceroute ça donnerai ça non : ?
argument=commande
$1=ip
read $1
traceroute $1
ou dans ce genre?
merci pour ceux qui me repondent c'est super sympa ;
tien d'ailleur je fais profiter d'un super lien que j'ai trouvé mais en anglais..
http://www.tldp.org/LDP/abs/html/
jlo
Si ça peut t'aider à comprendre comment fonctionnent les arguments:
tu écris un petit fichier que tu nommes par exemple: aa.sh et dans lequel tu mets juste ça:
echo "arg1 = " $1
echo "arg2 = " $2
echo "arg3 = " $3
ensuite tu appelles ton script dans la ligne de commande avec:
"sh aa.sh un deux trois" Evidement, tu peux écrire n'importe quoi à la place de "un deux trois" du moment qu'il y a trois mots séparés par des blancs.
et tu auras le résultat suivant:
sh aa.sh un deux trois
arg1 = un
arg2 = deux
arg3 = trois
Voilà, après tu peux reprendre ton programme avec par exemple:
$IP = $1
Il y a plein de chose à ajouter ensuite pour faire un script "sérieux", par exemple un controle sur le nombre et le type des arguments, mais ça sera pour plus tard...
Bon courage !
celmir
quand tu fais un traceroute 127.0.0.1, 127.0.0.1 est un argument passé à la commande traceroute, tu peux faire la même chose avec des scripts shell.
si je ne m'abuse les commandes shutdown et service par exemple ne sont pas des bianires mais des scripts shell.
shutdown -h now
service httpd status
dans les deux cas tu passes des arguments ... 🙂
PyReX
Il y a plein de chose à ajouter ensuite pour faire un script "sérieux", par exemple un controle sur le nombre et le type des arguments, mais ça sera pour plus tard...
je ne demande qu'a apprendre, si qqun se devoue pour des petits cours sur msn, je suis preneur 😉
merci a tous
PyReX
encore moi,
est ce que qqun connait la commande pour ouvrir une nouvelle console avec un nouveau fichier
par ex je voudrais ouvrir une nouvelle console avec "tail -f /var/log/messages"
et aussi que le script verifie si la personne qui le lance est su, et sinon elle lui propose de se logué
merci
celmir
xterm -e tail -f /var/log/messages
ouvre une fenêtre et execute un tail ...
xterm -e script
execute un script dans lequel tu peux tester l'utilisateur et lancer le tail.