Script - If - immer false...

Niemand der dazu noch was weiss?
 
Noe. Du ignorierst ja was man dir sagt, das ist doch kein Ratespiel hier. :P
 
oh, sry...

...Mein aktueller Code sieht so aus:

Code:
#!/bin/bash
# this is a small script to download the last aMule tarball in tar.bz2 format, 
# unpack it, pack it as 7z and upload it to my host...

cd /mnt/storage/longtemp/emule_mods/amule
wget http://amule.sourceforge.net/tarballs/tarballs.xml -O /mnt/storage/longtemp/emule_mods/amule/tarballs.xml
amulerev=`cat /mnt/storage/longtemp/emule_mods/amule/tarballs.xml | grep -o youngest=\'....\' | grep -o [0-9][0-9][0-9][0-9]`
localver=`ls /mnt/storage/longtemp/emule_mods/amule/ | grep -o [0-9][0-9][0-9][0-9] | tail -1`
if [ $amulerev -gt $localver ]; then 
	
	wget http://amule.sourceforge.net/tarballs/aMule-SVN-r$amulerev.tar.bz2 -O /mnt/storage/longtemp/emule_mods/amule/aMule-SVN-r$amulerev.tar.bz2
	tar xvf aMule-SVN-r$amulerev.tar.bz2
	7z a aMule-SVN-r$amulerev.7z /mnt/storage/longtemp/emule_mods/amule/aMule-SVN-r$amulerev/
	rm -R /mnt/storage/longtemp/emule_mods/amule/aMule-SVN-r$amulerev/
	
	
	HOST="meinhost"
	USERNAME="meinuser"
	PASSWD="meinpass"
	FILE="/mnt/storage/longtemp/emule_mods/amule/aMule-SVN-r$amulerev.7z"
	
	ftp -vni ${HOST}
	${USERNAME}
	${PASSWD}
	put ${FILE} /www/tarballs/aMule-SVN-r$amulerev.7z
	close
	quit
	
	
else
	echo "No new tarball found!"
fi

Naja...jetzt scheint sowieso beim Hoster was nicht zu stimmen...

Status: Connection attempt failed with "EHOSTUNREACH - No route to host".

...
 
Hi,

und so kehrt alles zu seinem Ursprung zurueck, da haben wir doch schon wieder das Anfangsproblem dass du die Befehle nicht an ftp schickst. Dann schau dir doch die Posts 7, 9 und 16 dieses Threads nochmal an. ;)

Das Syntax Problem beim Here-Dokument kommt uebrigens von der Einrueckung vor EOF, wie mir 10 Sekunden experimentieren gesagt haben.
Keine Ahnung warum, aber ich habe selbst auch noch nie damit gearbeitet.

So in etwa sollte es korrekt sein:
Code:
	ftp -in <<-EOF
open $HOST
# etc.
EOF
Dast ist IMHO deutlich besser zu lesen als die "echo -e" Variante, wobei der Effekt der selbe ist.

mfg,
bytepool
 
Fein, bis dahin funkt es nun auch :) Vielen Dank!

Nur habe ich jetzt das Problem, dem FTP die Commands richtig zu uebergeben!

Code:
#!/bin/bash
# this is a small script to download the last aMule tarball in tar.bz2 format, 
# unpack it, pack it as 7z and upload it to my host...

cd /mnt/storage/longtemp/emule_mods/amule
wget http://amule.sourceforge.net/tarballs/tarballs.xml -O /mnt/storage/longtemp/emule_mods/amule/tarballs.xml
amulerev=`cat /mnt/storage/longtemp/emule_mods/amule/tarballs.xml | grep -o youngest=\'....\' | grep -o [0-9][0-9][0-9][0-9]`
localver=`ls /mnt/storage/longtemp/emule_mods/amule/ | grep -o [0-9][0-9][0-9][0-9] | tail -1`
if [ $amulerev -gt $localver ]; then 
	
	wget http://amule.sourceforge.net/tarballs/aMule-SVN-r$amulerev.tar.bz2 -O /mnt/storage/longtemp/emule_mods/amule/aMule-SVN-r$amulerev.tar.bz2
	tar xvf aMule-SVN-r$amulerev.tar.bz2
	7z a aMule-SVN-r$amulerev.7z /mnt/storage/longtemp/emule_mods/amule/aMule-SVN-r$amulerev/
	rm -R /mnt/storage/longtemp/emule_mods/amule/aMule-SVN-r$amulerev/
	
	
	HOST="meinhost"
	USERNAME="meinuser"
	PASSWD="meinpass"
	FILE="/mnt/storage/longtemp/emule_mods/amule/aMule-SVN-r$amulerev.7z"
	
		ftp <<EOF
open ${HOST}
quote USER ${USERNAME}
quote PASS ${PASSWD}
put ${FILE} /www/tarballs/aMule-SVN-r$amulerev.7z
close
quit
EOF
	
else
	echo "No new tarball found!"
fi

Da kommt dann ein Fehler, nachdem FTP aufgerufen wird:

Code:
+ ftp
Password:Name (meinhost:meinPC-Username[?]): {*1}
Login authentication failed
Login failed.
Login authentication failed
You aren't logged in
ftp: bind: Address already in use

{*1} Hier habe ich dann mal zum testen mein PASSWD eingegeben..aber auch nichts....

Wenn ich in der console manuell folgendes mache:

ftp
dann kommt
ftp>

dann schreibe ich open myhost

dann kommt:
Connected to meinhost.
220---------- Welcome to Pure-FTPd [TLS] ----------
220-You are user number 21 of 150 allowed.
220-Local time is now 21:13. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Name (meinhost:meinPC-Username[?]): meinuser


meinuser eingegeben...
...dann Passwort natuerlich auch eingegeben...kommt

331 User meinuser OK. Password required
Password:
230-User meinuser has group access to: meinuser
230 OK. Current restricted directory is /
Remote system type is UNIX.
Using binary mode to transfer files.


...dann kann ich alles ganz normal machen...
 
Hi,

was spricht gegen die Variante die du schonmal hattest?
Code:
	ftp -din <<EOF
open $HOST
user $USERNAME $PASSWD
bin
put $FILE /www/tarballs/aMule-SVN-r${amulerev}.7z
close
quit
EOF

Du haettest mir ja auch sagen koennen dass die Option -n den auto-login unterdrueckt. ;)
Ansonsten halt mal ein wenig experimentieren, und fleissig die man page konsultieren.

Nebenbei, wenn du eine Variable in einen Text einbettest, wie oben bei dem put Befehl, solltest du zur Sicherheit die Variable mit {} eingrenzen. Das ist obendrein besser zu lesen.

mfg,
bytepool
 
Coool!

...es funktioniert! :)

Es kommen zwar noch meldungen mit sh -x...aber es lueppt super! :)

Code:
+ HOST=meinhost
+ USERNAME=meinuser
+ PASSWD=meinpass
+ FILE=/mnt/storage/longtemp/emule_mods/amule/aMule-SVN-r9682.7z
+ ftp -din
ftp: setsockopt: Bad file descriptor
---> SYST
---> USER meinuser
---> PASS XXXX
---> SYST
---> TYPE I
ftp: setsockopt (ignored): Permission denied
---> PORT 192,168,0,15,188,35
---> STOR /www/tarballs/aMule-SVN-r9682.7z
---> QUIT


Jetzt schau ich mir nur noch crontab an...

EDIT: Habe es mal gemacht...natuerlich mit googlen...kannte das ja nicht :P

Code:
dude@dude-desktop:~$ cat cron.txt
0 0,3,6,9,12,15,18,21 * * * sh /mnt/storage/coding/xMule/amule/tar.bz2.-.7z.sh > /home/dude/cronlogs/tar_7z_ftp.log

Muesste doch gehen, oder? So wird alle 3 Stunden das script durchlaufen gelassen....und geloggt auch....aber schickt er so noch mails?
 
Zuletzt bearbeitet:
ich bezweifle nach wievor dass es so korrekt läuft
weil die zeile

Code:
tar xvf aMule-SVN-r$amulerev.tar.bz2

nur das tar entpackt. nicht aber die bz2 gezippten archive

wie schon gesagt. nutze:

Code:
tar xjf

oder wenn du unbedingt verbosen output brauchst von mir aus auch:

Code:
tar xvjf
 
Ne, vorbose brauch ich nicht :P

Und danke! Hat aber auch mit xvf gefunkt :P

...aber besser ist es wenn kein vorbose mit drin ist ;)

Jetzt warte ich nur noch, ob es mit'm cron lueppt... um 15 uhr weiss ich mehr...
 

Ähnliche Themen

Queue für copy Script

svn import "500 Internal Server Error"

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

NagiosGrapher 1.7.1 funktioniert nicht

Falsche Rechte gesetzt beim Anlegen von Ordnern via Samba-Client

Zurück
Oben