Gå til innhold

Automailing av ei fil med bash


Anbefalte innlegg

Hei

 

Sitter med en linux server som enkelte ganger får ny ip adresse da kabelmodemet blir restartet (avidi arg..). Er jeg i nærheten av serveren når dette skjer kjører jeg bare en ip addr, for så å oppdatere dns for domenet.

Nå har det seg slik at jeg fram til sommeren vil være ute av stand til å logge meg på servern direkte (ikke via nettet)

 

Har noen tips til hvordan jeg kan scripte slik at en mail, med den nye adressen sendes, hvis outputten fra ip addr endrer seg?

Eventuelt bare kjøre ip addr > fil, send fila til en mail adresse en gang i timen? Hvis jeg oppretter en hotmail adresse vil jo gamle mailer automatisk bli slettet..

 

Er egentlig ganske grønn i bashprogrammering så hvis noen har en komplett løsning så kom gjerne med den. Ellers mottas alle forslag med takk :)

Lenke til kommentar
Videoannonse
Annonse

du kan sende en fil med

sendmail -s "Ny ipadresse" [email protected] < ipadresse.txt

Om du får skrevet ipadressen til ipadresse.txt, og du har den gamle adressen i gammeladresse.txt, kan du gjøre noe slikt:

echo ny.ip > ipadresse.txt && diff -q ipadresse.txt gammeladresse.txt || cp ipadresse.txt gammeladresse.txt && sendmail -s "Ny ipadresse" [email protected] < ipadresse.txt

 

(utestet)

Lenke til kommentar

Takk for svaret.

Jeg har allerede skrevet denne koden

 

 

#!/bin/bash
#
#  	AUTOMATIC NETWORK TECHNOLOGY
#  IP INFORMATION NOTIFICATION SCRIPT V 0.1 (IINS)
#  	Copyright 2003,2004 Stian Engen 
#
#	This program is free software; you can redistribute it and/or modify
#	it under the terms of the GNU General Public License as published by
#	the Free Software Foundation; either version 2 of the License, or
#	(at your option) any later version.
#
#	This program is distributed in the hope that it will be useful,
#	but WITHOUT ANY WARRANTY; without even the implied warranty of
#	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#	GNU General Public License for more details.
#
#	http://www.gnu.org/licenses/gpl.txt
#
#	
#
#This scripts gets ip information which it then compares with the information it got last time it checked.
#If the ip has changed, it send a mail containg updated ip information. 
#




FROM=`uname -n`    	
#The hostname of the senders system

#-The mail body-
#

PART1="This is an auto generated message, telling you that the IP adress for $FROM has changed" 
#What to write in the mail the we may send (formated with linebreak later)
PART2="The new ip is : "	#Here the new IP will be printed
#Continued...
PART3="Generated and sent `date` by \n$FROM"
#Contains infotmation about the time created and senders hostname
#
#-mail body ends here-

SUBJECT="`date +%d.%m.%y`-`date +%H:%M` IP for $FROM"	#Subject. Includes date HH:MM - dd.mm

[email protected]          #The mail adress to send the IP-information to

#The IP-Files
OLD=/tmp/ip.old            #The old "ip-file" Putting it in tmp ensures clean at boot 
NEW=/tmp/ip.new            #The new "ip-file"
ip addr | grep -n "global eth0" > $NEW          #Prints the line containg the ip adress for eth0 to the new file
INFO=`cat $NEW | tr -cd '\012[0-9] [=.=]'`	#Cleans the new "ip-file" before printing to $INFO for sending



cmp $OLD $NEW &> /dev/null  #cmp compares the two files.

# /dev/null buries the output of the "cmp" command.
#   cmp -s $1 $2  has same result ("-s" silent flag to "cmp")


if [ $? -eq 0 ]         #Test exit status of "cmp" command.
then :  	#If the files are the same (no exit status) the script does nothing .
else  	#But if they are different 
 echo -e "$PART1\n \n $PART2 $INFO \n \n \n$PART3" | mail -s "$SUBJECT" $RECIPENT 
 	#A mail containg the new IP-information is sent to the given recipent
fi  	#ends the if command

cp -f $NEW  $OLD	#replaces the old "ip-file" with the new one, so that the script won't send
#the next time it is beeing run, unless the ip-adress changes

exit 0

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...