#1 Le 28/02/2012, à 23:44
Script envoi adresse IP par mail au démarage
Bonjour,
Introduction
Je dispose de deux ordinateurs, un client et un serveur (au sens ssh du terme).
J'ai installé un tunnel ssh entre les deux si bien que je peux administrer le serveur à distance.
Pour pouvoir me connecter en ssh, il faut que le serveur soit allumé et que je connaisse son IP. Par contre, d'après mes essais, il n'est pas nécessaire qu'une session soit ouverte car :
la connexion wifi s'établit automatiquement au démarrage alors que je n'ai pas touché au fichier /etc/interface
j'ai pris la peine d'ajouter le service ssh au démarrage des runlevels 2 à 5 en utilisant sysv-rc-conf
Objectif
Je souhaiterai créer un script qui m'envoie un mail lorsque le PC est mis sous tension et lorsque quelqu'un l’éteint.
Dans les deux cas je voudrais qu'il m'envoie l'adresse IP du PC ainsi qu'un horodatage.
Ce que j'ai essayé
J'ai créé un fichier ipsend dans /etc/init.d contenant (j'ai caché login, mot de passe et adresses mail):
#!/bin/sh
IP=$(wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1)
case "$1" in
start)
sendemail -s smtp.free.fr:587 -xu LOGIN_FREE -xp MDP_FREE -f MAIL_FREE -t MAIL_DEST -u "CONNEXION" -m "$(date) $IP"
;;
stop)
sendemail -s smtp.free.fr:587 -xu LOGIN_FREE -xp MDP_FREE -f MAIL_FREE -t MAIL_DEST -u "DECONNEXION" -m "$(date) $IP"
;;
*)
echo 'Usage: /etc/init.d/ipsend {start|stop}'
exit 1
;;
esac
exit 0puis j'ai fait :
$ chmod 755 /etc/init.d/ipsend
$ sudo update-rc.d ipsend defaults 99 10Afin de rendre le script exécutable et de faire en sorte qu'il soit :
Le dernier lancé au démarrage du serveur
Le premier lancé à l'extinction du serveur
ceci afin d'être sûr que la connexion wifi soit bien active au moment de l’exécution.
Mon problème
Si je viens vous demander de l'aide c'est que ça ne marche pas ^^
En effet, il n'envoie pas de mail, ni au démarrage ni à l'extinction.
Je précise que j'effectue les tests sur mon pc local (le client).
Par contre :
si j'ajoute une commande de test juste après pour écrire dans un fichier, l'écriture se fait, prouvant que le script est executé
si j’exécute le script en faisant $ sudo service ipsend start, je reçois bien mon mail
En regardant les messages système (sur écran noir) à l'extinction je vois qu'il ne trouve pas l'hote smtp.free.fr.
Je pense que mon problème est lié à la mise en place du réseau/wifi et de sa désactivation à l'extinction.
Savez-vous comment ça marche ?
Pouvez-vous m'aider s'il vous plaît ?
Merci !
Dernière modification par arnaud_d (Le 28/02/2012, à 23:47)
Mon profil
- Sony Vaio VGN-C1S sous Ubuntu 12.04 "Precise Pangolin"
- HP Pavilion DM1-3130 sous Ubuntu 11.04 "Natty Narwhal"
- HP Pavilion a905 sous Ubuntu 10.04 LTS "Lucid Lynx"
Hors ligne
#2 Le 28/02/2012, à 23:55
Re : Script envoi adresse IP par mail au démarage
Salut, regardes plutot du coté des fichiers :
# ls /etc/network/if-
if-down.d/ if-post-down.d/ if-pre-up.d/ if-up.d/qui sont faits pour ça.
Il suffit d'y placer tes scripts.
Dernière modification par sputnick (Le 28/02/2012, à 23:56)
bashfr.org(random);
ZeBigDuck : Original, le flux rss des normes ISO est encodé en UTF-8...
En ligne
#3 Le 29/02/2012, à 07:41
Re : Script envoi adresse IP par mail au démarage
Je poste pour dire que je reposterai tout à l'heure :
J'ai un script qui fait +- ça à mon travail, mais là, je suis chez moi.
Edit :
Attention il s'agit de paramètres pour utiliser avec un compte gmail. Il y a je pense certaines spécificités.
Voila l'envoi en une ligne :
wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//' | sendEmail -m -f adresse.expédition@gmail.com -t adresse.expédition@gmail.com -u sujet.message -s smtp.gmail.com:587 -o tls=yes -xu user -xp passwordIl tourne sur deux serveurs avec fcron.
BD
Dernière modification par Brunod (Le 29/02/2012, à 10:01)
>>>-----------------<3--------> U.B.U.N.T.U : U Better Use New Technology : UBUNTU
Windows est un système d'exploitation de l'homme par l'ordinateur.
Linux, c'est le contraire ...
--> état de la conversion : 32 pc linux
Hors ligne
#4 Le 29/02/2012, à 10:42
Re : Script envoi adresse IP par mail au démarage
sputnick : Merci je pense en effet que cela correspond à ce que je cherche. J'essaie ça ce soir.
Brunod : Merci pour ta réponse, ton utilisation de sendemail me donne des idées (surtout en ce qui concerne TLS), mais mon problème n'est pas tant de savoir envoyer un mail en ligne de commande mais de savoir comment exécuter le script après que la connexion soit établie. Je serais curieux de savoir comment tu as utilisé fcron.
Mon profil
- Sony Vaio VGN-C1S sous Ubuntu 12.04 "Precise Pangolin"
- HP Pavilion DM1-3130 sous Ubuntu 11.04 "Natty Narwhal"
- HP Pavilion a905 sous Ubuntu 10.04 LTS "Lucid Lynx"
Hors ligne
#5 Le 29/02/2012, à 10:58
Re : Script envoi adresse IP par mail au démarage
... Je serais curieux de savoir comment tu as utilisé fcron.
J'ai juste un envoi fixe tous les jours à 10H.
BD
>>>-----------------<3--------> U.B.U.N.T.U : U Better Use New Technology : UBUNTU
Windows est un système d'exploitation de l'homme par l'ordinateur.
Linux, c'est le contraire ...
--> état de la conversion : 32 pc linux
Hors ligne
#6 Le 29/02/2012, à 11:40
Re : Script envoi adresse IP par mail au démarage
Ah Ok, alors ça me va pas, je veux être prévenu à l'instant de la connexion et de la déconnexion.
Mon profil
- Sony Vaio VGN-C1S sous Ubuntu 12.04 "Precise Pangolin"
- HP Pavilion DM1-3130 sous Ubuntu 11.04 "Natty Narwhal"
- HP Pavilion a905 sous Ubuntu 10.04 LTS "Lucid Lynx"
Hors ligne
#7 Le 29/02/2012, à 11:48
Re : Script envoi adresse IP par mail au démarage
Peut être que lors de l'envoi du mail le serveur de mail n'est pas actif et donc l'envoi de mail retourne une erreur.
Il faudrait regarder l'ordre de lancement des deamons.
Quelle galère pour installer sa souris sous linux, alors que sous windows, on double-clique sur un .exe et c'est fini
Hors ligne
#8 Le 29/02/2012, à 15:30
Re : Script envoi adresse IP par mail au démarage
Mazarini, je n'ai pas installé de serveur mail (type Postfix) mais j'utilise sendemail qui permet d'envoyer un mail via le SMTP d'un FAI comme le ferait un client de messagerie normal (Thunderbird...)
Par contre tu as raison, il y a un problème d'ordre de lancement des deamons, il faut qu'il lance mon service ipsend après avoir lancé le service qui permet la connexion internet (d'ailleurs c'est une question que je me pose : quel est-il ???)
C'est pour cette raison que je mise beaucoup sur la solution de sputnick.
Mon profil
- Sony Vaio VGN-C1S sous Ubuntu 12.04 "Precise Pangolin"
- HP Pavilion DM1-3130 sous Ubuntu 11.04 "Natty Narwhal"
- HP Pavilion a905 sous Ubuntu 10.04 LTS "Lucid Lynx"
Hors ligne
#9 Le 29/02/2012, à 15:57
Re : Script envoi adresse IP par mail au démarage
J'en suis resté aux scripts genre 12-script qui se lance dans l'ordre. Pas sur que ca fonctionne encore comme ca.
Autrement, il est possible de déclencher des scripts sur le lancement du réseau et son arrêt dans le fichier interfaces.
Quelle galère pour installer sa souris sous linux, alors que sous windows, on double-clique sur un .exe et c'est fini
Hors ligne
#10 Le 29/02/2012, à 20:35
Re : Script envoi adresse IP par mail au démarage
Je viens d'essayer la solution de sputnick, j'ai ajouté le script ipsend-up dans /etc/network/if-up.d :
#!/bin/sh
IP=$(wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1)
sendemail -s smtp.free.fr:587 -xu LOGIN_FREE -xp MDP_FREE -f MAIL_FREE -t MAIL_DEST -u "CONNEXION" -m "$(date) $IP"
exit 0et le script ipsend-down dans /etc/network/if-down.d (le même mais avec écrit DECONNEXION).
Résultat :
Le mail de connexion est envoyé exactement comme je le souhaite. Donc cette partie fonctionne
Par contre, le mail de déconnexion n'est pas envoyé
J'ai essayé, comme conseillé sur cette page de mettre dans if-post-down.d mais ce n'est pas mieux.
Je voulais essayer /etc/NetworkManager/dispatcher.d/01ifupdown mais j'ai l'impression qu'il appelle les mêmes scripts :
$ more /etc/NetworkManager/dispatcher.d/01ifupdown
#!/bin/sh -e
# Script to dispatch NetworkManager events
#
# Runs ifupdown scripts when NetworkManager fiddles with interfaces.
# See NetworkManager(8) for further documentation of the dispatcher events.
if [ -z "$1" ]; then
echo "$0: called with no interface" 1>&2
exit 1;
fi
# Fake ifupdown environment
export IFACE="$1"
export LOGICAL="$1"
export ADDRFAM="NetworkManager"
export METHOD="NetworkManager"
export VERBOSITY="0"
# Run the right scripts
case "$2" in
up|vpn-up)
export MODE="start"
export PHASE="post-up"
exec run-parts /etc/network/if-up.d
;;
down|vpn-down)
export MODE="stop"
export PHASE="post-down"
exec run-parts /etc/network/if-post-down.d
;;
hostname)
# do nothing here, the 'hostname' action is not handled by ifupdown scripts.
exit 0
;;
# pre-up/pre-down not implemented. See
# https://bugzilla.gnome.org/show_bug.cgi?id=387832
# pre-up)
# export MODE="start"
# export PHASE="pre-up"
# exec run-parts /etc/network/if-pre-up.d
# ;;
# pre-down)
# export MODE="stop"
# export PHASE="pre-down"
# exec run-parts /etc/network/if-down.d
# ;;
hostname|dhcp4-change|dhcp6-change)
# Do nothing
;;
*)
echo "$0: called with unknown action \`$2'" 1>&2
exit 1
;;
esacDe plus il met en évidence que pre-up et pre-down ne sont malheureusement pas implémentés...
Je suis d'accord sur le fait qu'on ne puisse pas attendre que le script se termine lorsque le PC s'éteint (voir cette conversation), c'est pourquoi je pense que je ne pourrais pas faire d'envoi au moment de la déconnexion. Mon problème est à moitié résolu et c'est déjà pas mal.
J'attends vos dernières réactions ou idées de génie avant de clore le fil.
Merci pour votre aide.
Dernière modification par arnaud_d (Le 29/02/2012, à 21:19)
Mon profil
- Sony Vaio VGN-C1S sous Ubuntu 12.04 "Precise Pangolin"
- HP Pavilion DM1-3130 sous Ubuntu 11.04 "Natty Narwhal"
- HP Pavilion a905 sous Ubuntu 10.04 LTS "Lucid Lynx"
Hors ligne
#11 Le 29/02/2012, à 21:56
Re : Script envoi adresse IP par mail au démarage
>>>-----------------<3--------> U.B.U.N.T.U : U Better Use New Technology : UBUNTU
Windows est un système d'exploitation de l'homme par l'ordinateur.
Linux, c'est le contraire ...
--> état de la conversion : 32 pc linux
Hors ligne
#12 Le 01/03/2012, à 10:13
Re : Script envoi adresse IP par mail au démarage
Oui mais alors ça pose une autre question :
Qu'est-ce qui démarre et arrête la connexion wifi ?
Quel est le service ?
Avec quel priorité se lance-t-il ?
Je n'ai rien trouvé au niveau de System V, peut-être qu'il faut que je fouille autour de Upstart.
Mon profil
- Sony Vaio VGN-C1S sous Ubuntu 12.04 "Precise Pangolin"
- HP Pavilion DM1-3130 sous Ubuntu 11.04 "Natty Narwhal"
- HP Pavilion a905 sous Ubuntu 10.04 LTS "Lucid Lynx"
Hors ligne
Pages : 1
- Accueil
- » Forum
- » Terminal, scripts et ligne de commande
- » Script envoi adresse IP par mail au démarage