Sida 1 av 1
Maila från skript ger Null message body;... [LÖST]
Postat: 10 aug 2009, 19:04
av magnus-s
Tja jag försöker skriva ett skript som ska maila mitt ip numret på min dator till ett gmail konto.
DEL 1
Kod: Markera allt
#!/bin/bash
FILEN="$HOME/354ef345df.txt"
EPOST="xxxxx@gmail.com"
echo $FILEN
cd $HOME
wget http://www.whatsmyip.us/showipsimple.php -O $FILEN
while [ ! -s $FILEN ]
do
printf "."
done
echo "Foun it and emailing it. 2 sek sleep "
sleep 1
cat $FILEN
sleep 1
echo ".. "
Slut A
Slut B
Kod: Markera allt
cat $FILEN |mailx -s "IP NR" $EPOST
rm $FILEN
Båda dom två sluten ger följande fel meddelande
Vad gör jag för fel?
hmm såg just att rm kommandot inte heller fungerar, filen 354ef345df.txt är kvar i min home kattlåg :/
Re: Maila från skript ger Null message body; hope that's ok
Postat: 10 aug 2009, 22:25
av webaake
Detta perlscript funkar bar för mig (jag kör postfix):
Kod: Markera allt
#!/usr/bin/perl
$IP_FILE = "ipemail.result";
my $newip = `wget www.whatismyip.com/automation/n09230945.asp -O - -q`;
my $oldip = getoldip();
my $send_to = "To: din_adress\@gmail.com\n";
my $reply_to = "Reply-to: din_adress\@gmail.com\n";
my $from = "From: Kanske_en_annan_adress\@telia.com\n";
my $subject = "Subject: IP Address: $newip\n";
my $content = "<h1>$newip</h1>";
if($newip ne $oldip)
{
writenewip($newip);
unless(open (MAIL, "|/usr/sbin/sendmail din_adress\@gmail.com"))
{
print "error.\n";
warn "Error starting postfix: $!";
}
else{
print MAIL $from;
print MAIL $reply_to;
print MAIL $subject;
print MAIL $send_to;
print MAIL "Content-type: text/html\n\n";
print MAIL $content;
close(MAIL) || warn "Error closing mail: $!";
print "Mail sent\n";
}
}
sub writenewip
{
my($newip) = @_;
print ("new IP = $newip\n");
open IPFILE, ">$IP_FILE";
print IPFILE "$newip\n";
close IPFILE;
}
sub getoldip
{
open IPFILE, "$IP_FILE";
my($line) = 0;
while ( <IPFILE> )
{
chomp;
$line = $_;
}
close IPFILE;
return($line);
}
Kanske du måste skapa filen ipemail.result först nånstans och peka scriptet på den.
Re: Maila från skript ger Null message body; hope that's ok
Postat: 11 aug 2009, 11:15
av magnus-s
tack för svaret men jag vill inte installera nå extra server program på den här maskin.
CRAP...
Nu fungerar det inte längre att köra vanliga skript
Kod: Markera allt
#!/bin/bash
echo "hello, $USER. I wish to list some files of yours"
echo "listing files in the current directory, $PWD"
ls # list files
körde det här skriptet i ett terminal fönster och bara stog och tuggade utan att det hände nå mer :/
Måste jag installera om linux nu ??
Re: Maila från skript ger Null message body; hope that's ok
Postat: 11 aug 2009, 11:41
av magnus-s
ok nu körde jag följande skript lokalt på daton istället för putty terminal
#!/bin/bash
echo "test"
och fick det här felmedelandet
: Filen eller katalogen finns inte
: Kommandot finns inte
test
Vad är det för fel?
Re: Maila från skript ger Null message body; hope that's ok
Postat: 11 aug 2009, 11:49
av Konservburk
magnus-s skrev:ok nu körde jag följande skript lokalt på daton istället för putty terminal
#!/bin/bash
echo "test"
och fick det här felmedelandet
: Filen eller katalogen finns inte
: Kommandot finns inte
test
Vad är det för fel?
Mest troligt är att din skript-fil har carriage-return i slutet av varje rad, dvs windows-varianten av radbrytningar. Säg åt din textredigerare att spara filen i unix-format, eller använd kommandot
dos2unix på filen om du har det installerat, annars funkar det även med
sed -i 's/\r//g' filen.
Re: Maila från skript ger Null message body; hope that's ok
Postat: 12 aug 2009, 10:44
av magnus-s
Tror jag lyckade slösa problemet själv här är min slutgiltiga lösning
Kod: Markera allt
#!/bin/bash
# Script for sending ip to a e-mail
# ----- Variabler -------------------------------------------
FILEN="/var/tmp/iplog.log"
EPOST="xxxxx@gmail.com"
# -----------------------------------------------------------
# --save old ip in to a var--
sed -i 's/\r//g' $FILEN
exec < $FILEN
read OLDIP
echo "OLD IP = $OLDIP"
#-- Get ip to the file ----------------
wget http://www.whatsmyip.us/showipsimple.php -O $FILEN
#-- Check if file is on disk ----
while [ ! -s $FILEN ]
do
printf "."
done
#-- Reads the new file in to a new var --------
sed -i 's/\r//g' $FILEN
ls $FILEN
exec < $FILEN
read NEWIP
echo "NEW IP = $NEWIP"
echo " "
#-- Cheks if old an new ip is the same and mails if not ----------------
if [ $OLDIP != $NEWIP ]; then
echo "sending maill..."
echo $NEWIP | mailx -s "Gorans IP" $EPOST
else
echo "Same ip as last time"
fi