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 10/02/2016, à 16:33

Pili

RESOLU : Scripts à éxecuter sans introduire de mot de passe sudo

Bonjour, je sais que le sujet semble déjà avoir traité, re-traité etc mais je ne trouve pas la réponse à mon problème. Voici, j'ai réalisé un script bash pour le scan de mon réseau afin de surveiller la connexion des pc des enfants. Le script effectue donc un ifconfig et un nmap ( entre autre ) mais ces deux commandes nécessite les droits de super utilisateur. Le script fonctionne à merveille quand je le lance manuellement depuis ma console et que j'introduis le mot de passe mais mon but est de réalisé un crontab toute les minutes et cela sans devoir introduire le mot de passe à chaque fois. Comment puis-je faire pour que ce script puisse tourner ? Soit mon crontab effectue la commande soit le crontab de sudo effectue la commande. J'ai cependant essayé cette solution, le crontab sudo lance bien le script mais n'effectue pas le ifconfig et nmap du script. Merci de votre aide.

Dernière modification par Pili (Le 10/02/2016, à 19:47)


Plus encore que le changement, il faut faire l'éloge du sursaut.
Alexandre Lacroix

Hors ligne

#2 Le 10/02/2016, à 16:55

nany

Re : RESOLU : Scripts à éxecuter sans introduire de mot de passe sudo

Bonjour,

Pili a écrit :

soit le crontab de sudo effectue la commande.

Cette solution semble la plus simple car il n’y a alors pas à trifouiller dans /etc/sudoers, ce qui n’est pas sans risque si on entre des lignes inappropriées.
Seulement, quand bien même root exécute le script, si sudo y est présent, le fichier /etc/sudoers sera lu et, s’il est bien dans sa configuration par défaut, un mot de passe sera alors attendu. Il faudrait donc supprimer les sudo dans le script pour que celui-ci soit entièrement exécuté depuis le crontab de root.

En ligne

#3 Le 10/02/2016, à 16:58

gl38

Re : RESOLU : Scripts à éxecuter sans introduire de mot de passe sudo

Si tu mets ton script dans le crontab de root, il n'a pas besoin de mot de passe.
As-tu pensé à mettre le chemin complet de chaque commande, car le script n'a pas de pouvoir de devin, du genre /sbin/ifconfig, /usr/bin/nmap ?
Cordialement,
Guy

Hors ligne

#4 Le 10/02/2016, à 17:15

Pili

Re : RESOLU : Scripts à éxecuter sans introduire de mot de passe sudo

Merci  nany et gl38,
j'ai éliminé les sudo du script à effectuer et j'ai editer le crontab root au moyen de la commande 'sudo crontab -e' en introduisant la ligne suivante '* * * * * /chemin/absolu/vers/mon/script' mais le résultat n'est pas celui attendu car le script se lance bien toute les minutes mais le 'ifconfig' et le 'nmap' n'est pas effectué. La solution de rendre le script comme une commande systeme ne serait-elle pas applicable ? Et comment faire ?.


Plus encore que le changement, il faut faire l'éloge du sursaut.
Alexandre Lacroix

Hors ligne

#5 Le 10/02/2016, à 17:24

Pili

Re : RESOLU : Scripts à éxecuter sans introduire de mot de passe sudo

Encore une petite note : je n'ai pas envie que les fonctions nmap et ifconfig soit effectué sans demander le mot de passe. Je préférerais que le script ( que j'ai réalisé moi même et donc propre à mon systeme ) soit totipotent.


Plus encore que le changement, il faut faire l'éloge du sursaut.
Alexandre Lacroix

Hors ligne

#6 Le 10/02/2016, à 17:30

Pili

Re : RESOLU : Scripts à éxecuter sans introduire de mot de passe sudo

voici le script comme il existe sur mon compte utilisteur

#!/bin/sh
#zenity --info --text="Bonjour. Ce script permet de réaliser un scan de votre réseaux et par conséquent nécessite les droits super-utilisateurs. Ceci va vous être demandé maintenant."
#permets de lancer le script avec les droits de super utilisateur et stocke l'ensemble dans le fichier de résultats
ifconfig >> /home/pili/Bureau/ttts.log
#configuartion réseaux auquel l'ordinateur est connecté
ipadr=`ifconfig | grep Bcast | cut -d":" -f2 | cut -d" " -f1`
brcast=`ifconfig | grep Bcast | cut -d":" -f3 | cut -d" " -f1`
trois=`ifconfig | grep Bcast | cut -d":" -f3 | cut -d" " -f1 | cut -d"." -f3`
#recherche sur réseau des IP actives en utilisant nmap
rm -rf /home/pili/Bureau/ttts.log # effacement des fichiers résultats
echo "Votre adresse IP est : "$ipadr >> /home/pili/Bureau/ttts.log
echo "Votre broadcast de réseaux est : "$brcast >> /home/pili/Bureau/ttts.log
echo "Debut du scan réseaux nmap le $(date) " >> /home/pili/Bureau/ttts.log
#scan nmap avec la valeur $trois correspondant au broadcast en cours
nmap -sP 192.168.$trois.1-255 >> /home/pili/Bureau/ttts.log
echo "Fin du scan réseaux nmap le $(date) " >> /home/pili/Bureau/ttts.log
#lecture dans le fichier de résultats des infos comme la présence du PC de justin ou l'ipad de Charlotte en se basant sur la mac adresse de leurs cartes réseaux et du fichier (ttts.log ) qui contient les résultats de la commande nmap
while read line
	do
	ipjustin=`grep -B2 80:9B:20:42:02:18 | grep report | cut -d" " -f5`
done < /home/pili/Bureau/ttts.log
while read line
	do
	ipadcharlotte=`grep -B2 68:9C:70:75:2E:B1 | grep report | cut -d" " -f5`
done < /home/pili/Bureau/ttts.log
echo "Le PC de Justin est à l'adresse IP suivante "$ipjustin >> /home/pili/Bureau/ttts.log
echo "L'ipad de Charlotte est à l'adresse suivante "$ipadcharlotte >> /home/pili/Bureau/ttts.log
# je crée un fichier ( surveillance_pc.log ) qui contient les infos concernant les pc ( adresse IP et heure de connexion )
echo "PC de Justin (" $ipjustin "), " `date | cut -d" " -f5` >> /home/pili/Bureau/surveillance_pc.log
echo "Ipad Charlotte (" $ipadcharlotte "), " `date | cut -d" " -f5` >> /home/pili/Bureau/surveillance_pc.log

Plus encore que le changement, il faut faire l'éloge du sursaut.
Alexandre Lacroix

Hors ligne

#7 Le 10/02/2016, à 17:41

Pili

Re : RESOLU : Scripts à éxecuter sans introduire de mot de passe sudo

Pour gl38
donc si je comprend ce que tu veux me dire il faut mettre '/sbin/ifconfig' au lieu de ifconfig seul et '/usr/bin/nmap 192.168.$trois.1-255' au lieu de 'nmap 192.168.$trois.1-255', c'est bien cela ? Merci


Plus encore que le changement, il faut faire l'éloge du sursaut.
Alexandre Lacroix

Hors ligne

#8 Le 10/02/2016, à 17:46

Pili

Re : RESOLU : Scripts à éxecuter sans introduire de mot de passe sudo

Le script prendrait donc cette forme suivante :

#!/bin/sh
/sbin/ifconfig >> /home/pili/Bureau/ttts.log
#configuartion réseaux auquel l'ordinateur est connecté
ipadr=`ifconfig | grep Bcast | cut -d":" -f2 | cut -d" " -f1`
brcast=`ifconfig | grep Bcast | cut -d":" -f3 | cut -d" " -f1`
trois=`ifconfig | grep Bcast | cut -d":" -f3 | cut -d" " -f1 | cut -d"." -f3`
#recherche sur réseau des IP actives en utilisant nmap
rm -rf /home/pili/Bureau/ttts.log # effacement des fichiers résultats
echo "Votre adresse IP est : "$ipadr >> /home/pili/Bureau/ttts.log
echo "Votre broadcast de réseaux est : "$brcast >> /home/pili/Bureau/ttts.log
echo "Debut du scan réseaux nmap le $(date) " >> /home/pili/Bureau/ttts.log
#scan nmap avec la valeur $trois correspondant au broadcast en cours
/usr/bin/nmap -sP 192.168.$trois.1-255 >> /home/pili/Bureau/ttts.log
echo "Fin du scan réseaux nmap le $(date) " >> /home/pili/Bureau/ttts.log
#lecture dans le fichier de résultats des infos comme la présence du PC de justin ou l'ipad de Charlotte en se basant sur la mac adresse de leurs cartes réseaux et du fichier (ttts.log ) qui contient les résultats de la commande nmap
while read line
	do
	ipjustin=`grep -B2 80:9B:20:42:02:18 | grep report | cut -d" " -f5`
done < /home/pili/Bureau/ttts.log
while read line
	do
	ipadcharlotte=`grep -B2 68:9C:70:75:2E:B1 | grep report | cut -d" " -f5`
done < /home/pili/Bureau/ttts.log
echo "Le PC de Justin est à l'adresse IP suivante "$ipjustin >> /home/pili/Bureau/ttts.log
echo "L'ipad de Charlotte est à l'adresse suivante "$ipadcharlotte >> /home/pili/Bureau/ttts.log
# je crée un fichier ( surveillance_pc.log ) qui contient les infos concernant les pc ( adresse IP et heure de connexion )
echo "PC de Justin (" $ipjustin "), " `date | cut -d" " -f5` >> /home/pili/Bureau/surveillance_pc.log
echo "Ipad Charlotte (" $ipadcharlotte "), " `date | cut -d" " -f5` >> /home/pili/Bureau/surveillance_pc.log

Plus encore que le changement, il faut faire l'éloge du sursaut.
Alexandre Lacroix

Hors ligne

#9 Le 10/02/2016, à 17:49

Pili

Re : RESOLU : Scripts à éxecuter sans introduire de mot de passe sudo

Voici ce que me renvois le script ( résultats dans le fichier /home/pili/Bureau/ttts.log

Votre adresse IP est :
Votre broadcast de réseaux est :
Debut du scan réseaux nmap le mercredi 10 février 2016, 16:47:03 (UTC+0100)

Starting Nmap 6.40 ( http://nmap.org ) at 2016-02-10 16:47 CET
Nmap done: 0 IP addresses (0 hosts up) scanned in 0.29 seconds
Fin du scan réseaux nmap le mercredi 10 février 2016, 16:47:04 (UTC+0100)
Le PC de Justin est à l'adresse IP suivante
L'ipad de Charlotte est à l'adresse suivante

C'est comme si la commande ifconfig et nmap ne sont pas executée


Plus encore que le changement, il faut faire l'éloge du sursaut.
Alexandre Lacroix

Hors ligne

#10 Le 10/02/2016, à 18:06

MicP

Re : RESOLU : Scripts à éxecuter sans introduire de mot de passe sudo

…C'est comme si la commande ifconfig et nmap ne sont pas executée…

Il faudrait :

…
ipadr=`/sbin/ifconfig | grep Bcast | cut -d":" -f2 | cut -d" " -f1`
brcast=`/sbin/ifconfig | grep Bcast | cut -d":" -f3 | cut -d" " -f1`
trois=`/sbin/ifconfig | grep Bcast | cut -d":" -f3 | cut -d" " -f1 | cut -d"." -f3`
…

Avec ça, nmap pourra avoir la variable $trois renseignée, et ça devrait aller mieux.

Hors ligne

#11 Le 10/02/2016, à 18:11

gl38

Re : RESOLU : Scripts à éxecuter sans introduire de mot de passe sudo

Tu n'as pas mis le /sbin/ devant ifconfig quand tu remplis les variables.
Cordialement,
Guy

Hors ligne

#12 Le 10/02/2016, à 18:13

nany

Re : RESOLU : Scripts à éxecuter sans introduire de mot de passe sudo

Alors, la première commande ifconfig fonctionne peut-être avec le chemein complet mais comme tu fais ensuite un rm du fichier de log, on ne peut pas le voir.
Ensuite, il faudrait peut-être aussi le chemin complet de ifconfig dans les commandes qui renseignent tes variables.
En effet, on peux voir que les deux premières ne sont pas renseignées. Ce qui laisse à supposer que la troisième ne l’est pas non plus. Et cela expliquerait le fait que le scan (qui lui, semble bien être lancé) retourne 0 IP alors qu’il devrait au moins retourner ton adresse.

EDIT : over-grilled!

Sinon,

while read line
	do
	ipjustin=`grep -B2 80:9B:20:42:02:18 | grep report | cut -d" " -f5`
done < /home/pili/Bureau/ttts.log
while read line
	do
	ipadcharlotte=`grep -B2 68:9C:70:75:2E:B1 | grep report | cut -d" " -f5`
done < /home/pili/Bureau/ttts.log

Pourrait être remplacé par

ipjustin=`grep -B2 80:9B:20:42:02:18 /home/pili/Bureau/ttts.log | grep report | cut -d" " -f5`
ipadcharlotte=`grep -B2 68:9C:70:75:2E:B1 /home/pili/Bureau/ttts.log | grep report | cut -d" " -f5`

Dernière modification par nany (Le 10/02/2016, à 18:23)

En ligne

#13 Le 10/02/2016, à 19:45

Pili

Re : RESOLU : Scripts à éxecuter sans introduire de mot de passe sudo

Merci gl38 et Micp > en effet je suis distrait j'ai bien remplacé par /sbin/ifconfig et maintenant cela fonctionne à merveille > encore un énorme merci. Je viens d'apprendre quelques choses de précieux et utiles.
Merci nany > en effet ta modification est absolument parfaite mais en fait j'avais codé de cette façon pour m’entraîner à une boucle while avec un read line et je l'ai laissé comme cela ( c'était pour un autre script ).
Encore un grand merci à tous. Maintenant tout est parfait.
Excellente soirée.


Plus encore que le changement, il faut faire l'éloge du sursaut.
Alexandre Lacroix

Hors ligne