Upload na rapidshare skrypt perl - pomoc

hypnosiss

Moderator
Contributor
6 Lipiec 2008
327
31
28
32
Polska, Wrocław
QNAP
TS-x53D
Ethernet
1 GbE
Witam,
Ja i linux to jedna wielka pomyłka - mam problem.
Potrzebuje aby serwer QNAP uploadował mi pliki na rapidshare.com . W jednym temacie kolega znalazł kod źródłowy napisany w PERLu do upladowania plików(wraz z wznawianiem). http://images.rapidshare.com/software/rsapiresume.pl .
Czy mógłby mi ktoś pomóc jak co krok po kroku zrobić aby działał ten skrypt na QNAPie no i może rozbudował o to by można by było dodawać więcej linków naraz, nie wiem jak w perlu ale np w php można by było oddzielić linki kropkami i funkcją explode podzielić, dodać do tabeli i pętla do funkcji . Próbowałem stworzyć tam plik poprzez komende vi i wkleić kod skryptu lecz jakiś mi błąd wywaliło :/
Fajnie też jak ktośby zrobił taki projekt, np: tak jak ten rtorrent tylko z tym że uploadowało by się pliki na rapidshare.
Pozdrawiam.
 
zauktualizowałem ipkg , zainstalowałem perla, wgrałem skrypt ale przy jego uruchomianiu mam takie coś:
Kod:
File /share/HDA_DATA/Public/Macromedia.txt has 598 bytes. Calculating MD5HEX...
MD5HEX is "blablabla MD5 hash :P" (598 bytes analyzed)
Trying to upload to your prem account.
Getting upload server infos.
/opt/bin/perl: relocation error: /opt/lib/perl5/5.8.8/arm-linux/CORE/libperl.so: symbol __aeabi_uidiv, version GCC_3.5 not defined in file libgcc_s.so.1 with link time reference
[/share/HDA_DATA/Public] #
Z tego co widze to są problemy z jakąś bibliotęką czy jej brak? co robić ?
Pozdrawiam.
 
a zrob tak...

wrzuc skrypty wszystkie do jakiegos miejsca w optware czyli /share/HDA_DATA/optware

nastepnie przejdz na srodowisko optware:
# chroot /share/HDA_DATA/optware

teraz wykonaj:
# /opt/bin/perl /pelna/sciezka/do/twojego/skryptu.pl
-- pamietaj ze pelna sciezka nie bedzie juz prowadzic przez /share/HDA_DATA ... wczesniej przeszedles na srodowisko optware to tak jakbys odciął od siebie /share/HDA_DATA/optware
 
Problem z tym że jak bym chciał uploadować pliki z share/HDA_DATA/Public to bym nie mógł na optwaru.
Ale zrobiłem tak i mam kolejny problem...
Kod:
File /root/index_default.html has 6528 bytes. Calculating MD5HEX...
MD5HEX is "blablabla md5hex" (6528 bytes analyzed)
Trying to upload to your prem account.
Getting upload server infos.
Unable to open port: Socket type not supported
Może trzeba coś wgrać ? co robić ?
 
moglbys...
po za srodowiskiem optware napisz:
# mount

zobaczysz zamountowane udzialy w share w optware

lub bedac w srodowisku optware napisz:
# ls -la /share

co do skryptu pobiore go pozniej i bede testowal
kiedys pisalem kontrolki i pluginy do serwera FTPD opartego na FTP4ALL
nazywal sie openftpd http://web.archive.org/web/200309300538 ... nftpd.org/
wiekszosc byla napisana w perlu... wiec mysle ze cos pomoge... ale nie obiecuje ;D
 
otworz swoj plik w jakims edytorze

linia numer chyba 54:
Kod:
$socket = IO::Socket::INET->new(PeerAddr => "rapidshare.com:80") || die "Unable to open port: $!\n";

zamien na:
Kod:
$socket = IO::Socket::INET->new(PeerAddr => "rapidshare.com", PeerPort => "80", Type => SOCK_STREAM) || die "Unable to open port: $!\n";


linia numer chyba 82:
Kod:
$socket = IO::Socket::INET->new(PeerAddr => "rapidshare.com:80") || die "Unable to open port: $!\n";

zamien na:
Kod:
$socket = IO::Socket::INET->new(PeerAddr => "rapidshare.com", PeerPort => "80", Type => SOCK_STREAM) || die "Unable to open port: $!\n";


linia chyba numer 106:
Kod:
$socket = IO::Socket::INET->new(PeerAddr => $fulluploadserver) || die "Unable to open socket: $!\n";

zamien na:
Kod:
$socket = IO::Socket::INET->new(PeerAddr => $fulluploadserver, Type => SOCK_STREAM) || die "Unable to open socket: $!\n";


tutaj jak dziala:
Kod:
[/] # perl rsapiresume.pl rsapiresume.pl free
File rsapiresume.pl has 8694 bytes. Calculating MD5HEX...
MD5HEX is 6792c2cb61308b31af9623ac7e2e756f (8694 bytes analyzed)
Uploading as a free user.
Getting upload server infos.
Uploading to rs380l3.rapidshare.com
Upload chunk is 8694 bytes starting at 0.
Sending 8694 bytes.
Server response:
savedfiles=1 forbiddenfiles=0 premiumaccount=0 freeowner=0
File1.1=http://rapidshare.com/files/144258562/rsapiresume.pl.html
File1.2=http://rapidshare.com/files/144258562/rsapiresume.pl?killcode=3779147907732491804
File1.3=8694
File1.4=6792C2CB61308B31AF9623AC7E2E756F

mam do Was pytanie... postawicie mi tabletki nasenne ? :>
albo cos takiego http://www.l-earn.net/index.php?id=49 - bez recepty
ale chyba 3mg juz przestala na mnie dzialac
fuck...

zartowalem - ide sie meczyc... moze zasne :D
 
Super działa, dziękuje.
Tylko jak napisze mount to ok wyswietla mi zmuntowane foldery, no ale jak wpisze je w skryptcie to pisze ze nie ma takich folderów, a co do drugiej komendy na optware to wcale nic sie nie pojawia oprócz kropek...

Da się to jakoś zapętlić żeby więcej plików upladowało za jednym razem ?
np: tak jak w QRapid
Albo żeby wczytywało np: z pliku co ma ściągnąć(lepiej) ? :)
Na końcu proponowałbym dodać to jako nowy temat [HOW TO] z zpolszczoną wersją - napewno wielu osobą się przyda tia .
Pozdrawiam.
P.S Ciekawe zastosowania ma ta Melatonina - dobrze wiedzieć, może dzięki niej rozwinie się szerzej postęp medycyny(starzenie się) :D .
 
a co do drugiej komendy na optware to wcale nic sie nie pojawia oprócz kropek...
a powiedz mi...
ty masz optware wlaczone w QPKG?

utworz plik np. po za optware i nazwij go 'upload.sh'
w pliku wpisz:
Kod:
#!/bin/sh

chroot /share/HDA_DATA/optware perl /rsapiresume.pl /share/Public/plik free >> /share/Public/result
chroot /share/HDA_DATA/optware perl /rsapiresume.pl /share/Public/plik free >> /share/Public/result
nadaj plikowi prawa uruchomienia:
# chmod 755 upload.sh

po uruchomieniu pliku upload.sh zostanie uruchomiony chroot na ktorym odpali sie perl i wywola skrypt ...
zostanie on wywolany dwa razy - dwie linijki a rezultat zostanie zapisany do /Public/result

pierw sprawdz czy to dziala...
pozniej mozna poszukac jak jechac poleceniem foreach i odczytywac linijki z sciezkami do plikow... w ten sposob bedzie mozna zrobic to na petli...
ale ja sie nie znam na bashu az tak za bardzo ;D
wiec bede musial googlowac
 
Plik ze skryptem mam w :
share/HDA_DATA/optware/rapidshare1/upload.pl
w pliku upload.sh napisałem:
Kod:
#!/bin/sh

chroot /share/HDA_DATA/optware perl /share/HDA_DATA/optware/rapidshare1/upload.pl /share/Public/kisspclink.exe free >> /share/Public/result
chroot /share/HDA_DATA/optware perl /share/HDA_DATA/optware/rapidshare1/upload.pl /share/Public/Macromedia.txt free >> /share/Public/result
umieściłem go w głownym katalogu(tam gdzie sa foldery bin, share, root etc.).
nadałem chmody.
Przy uruchomieniu mam błąd:
Kod:
[/] # ./upload.sh
-sh: ./upload.sh: /bin/sh^M: bad interpreter: No such file or directory
Optware mam włączone w QPKG.
 
Mi sie wydaje, ze powinieneś umieścić ten plik nie w głównym katalogu tylko w share/HDA_DATA/optware/ bo to chyba ten jest głównym dla środowiska optware. Ale oczywiście mogę się mylić.
 
masz blad...
bo stworzyles go w windows'ie
Kod:
[/] # ./upload.sh
-sh: ./upload.sh: /bin/sh^M: bad interpreter: No such file or directory
linux na koncu kazdej linijki widzi "^M"

zainstlauj sobie u siebie na kompie Notepad++
wyedytuj ten plik z notepad++
w menu u gory "Format" wybierz "Convert to UNIX format"
zapisz i uruchom
 
z HDA_DATA

Kod:
[/share/HDA_DATA/optware/rapidshare1] # ls -la /share/HDA_DATA/
drwxrwxrwx   12 admin    administ     4096 Sep  9 02:17 ./
drwxrwxr-x   29 admin    administ     1024 Sep  9 02:03 ../
drwxrwxrwx    2 admin    administ     4096 Mar  1  2008 .@mysql/
drwxrwxrwx    4 admin    administ     4096 Sep 11 00:11 Public/
drwxrwxrwx   10 admin    administ    28672 Sep  3 20:00 Qdownload/
drwxrwxrwx    5 admin    administ     4096 Jul 28 15:21 Qmultimedia/
drwxrwxrwx    3 admin    administ     4096 Jul  1 13:25 Qrecordings/
drwxrwxrwx    2 admin    administ     4096 Mar  1  2008 Qusb/
drwxrwxrwx    3 admin    administ     4096 Aug  2 15:13 Qweb/
-rw-------    1 admin    administ     8192 Jul  9 14:11 aquota.user
drwxrwxrwx    5 admin    everyone     4096 Sep 10 21:14 backupy/
drwx------    2 admin    administ    16384 Mar  1  2008 lost+found/
drwxr-xr-x   20 admin    administ     4096 Sep 10 22:10 optware/

z /share/HDA_DATA/optware/share :

Kod:
[/share/HDA_DATA/optware/rapidshare1] # ls -la /share/HDA_DATA/optware/share
drwxrwxrwx    2 admin    administ     4096 Nov 25  2007 ./
drwxr-xr-x   20 admin    administ     4096 Sep 10 22:10 ../

z mount:

Kod:
[/share/HDA_DATA/optware/rapidshare1] # mount
/proc on /proc type proc (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
sysfs on /sys type sysfs (rw)
tmpfs on /tmp type tmpfs (rw,size=16M)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/sda4 on /mnt/ext type ext3 (rw)
/dev/sda1 on /mnt/HDA_ROOT type ext3 (rw)
/dev/sda3 on /share/HDA_DATA type ext3 (rw,usrjquota=aquota.user,jqfmt=vfsv0,dat                                                                             a=writeback,extents)
/bin on /mnt/HDA_ROOT/rootfs_2_3_6/bin type none (rw,bind)
/dev on /mnt/HDA_ROOT/rootfs_2_3_6/dev type none (rw,bind)
/mnt/HDA_ROOT/.config on /mnt/HDA_ROOT/rootfs_2_3_6/etc/config type none (rw,bin                                                                             d)
/proc on /mnt/HDA_ROOT/rootfs_2_3_6/proc type none (rw,bind)
/tmp on /mnt/HDA_ROOT/rootfs_2_3_6/tmp type none (rw,bind)
/share/HDA_DATA/Qdownload on /mnt/HDA_ROOT/rootfs_2_3_6/share/Qdownload type non                                                                             e (rw,bind)
/dev on /share/HDA_DATA/optware/dev type none (rw,bind)
/proc on /share/HDA_DATA/optware/proc type none (rw,bind)
/proc/bus/usb on /share/HDA_DATA/optware/proc/bus/usb type none (rw,bind)
/share/HDA_DATA/Public on /share/HDA_DATA/optware/mnt/ext/Public type none (rw,b                                                                             ind)
/share/HDA_DATA/Qusb on /share/HDA_DATA/optware/mnt/ext/Qusb type none (rw,bind)
/share/HDA_DATA/Qweb on /share/HDA_DATA/optware/mnt/ext/Qweb type none (rw,bind)
/share/HDA_DATA/Qmultimedia on /share/HDA_DATA/optware/mnt/ext/Qmultimedia type                                                                              none (rw,bind)
/share/HDA_DATA/Qdownload on /share/HDA_DATA/optware/mnt/ext/Qdownload type none                                                                              (rw,bind)
tmpfs on /.eaccelerator.tmp type tmpfs (rw,size=32M)
/share/HDA_DATA/Qdownload on /mnt/HDA_ROOT/rootfs_2_3_6/share/Qdownload type non                                                                             e (rw,bind)
/share/HDA_DATA/Public on /share/HDA_DATA/optware/mnt/ext/Public type none (rw,b                                                                             ind)

Natomiast po uruchomieniu pliku(juz zkonwertowanego do UNIXa) pokazuje sie:
Kod:
[/] # ./upload.sh
Can't open perl script "/share/HDA_DATA/optware/rapidshare1/upload.pl": No such file or directory
Can't open perl script "/share/HDA_DATA/optware/rapidshare1/upload.pl": No such file or directory

Co ciekawe, jak wchodzę do tego folderu to jest tam plik jak i foldery(dla pewności skopiowalem też scieszke z błędu).
Nie rozumię...
 
a bo zle zrobiles
Kod:
chroot /share/HDA_DATA/optware perl /share/HDA_DATA/optware/rapidshare1/upload.pl /share/Public/kisspclink.exe free >> /share/Public/result

jesli wchodzisz na chroot /share/HDA_DATA/optware to juz nie mozesz po za ten katalog wyjsc
wiec
musi to wygladac tak:
Kod:
chroot /share/HDA_DATA/optware perl /rapidshare1/upload.pl /share/Public/kisspclink.exe free >> /share/Public/result

po drugie z tego co widze... udzialy nie sa w /share/ tylko w /mnt/ext/Public
zerknij tu ;D
pamietaj ze mowa tutaj o optware
wiec po za optware robisz:
Kod:
# ln -sf /share/HDA_DATA/optware/mnt/ext
w optware robisz
Kod:
# ln -sf /mnt/ext
 
teraz tak:
uruchomilem upload.sh po czym nastała "głucha cisza" czyli nie bylo mozna wpisywac komend tylko sam tekst...
jakis mi tam sie plik utworzyl tylko ze bez rozrzezenia i bez danych(pusty).
Myśle że jest jeszcze jeden błąd a więc jak np: pobieranie pliku pierwszego zakonczy sie to w tym przypadku zapisuje sie plik result nastepnie jest uploadowany drugi plik, z doswiadczenia wiem (w php tak jest) że ten "drugi" result zastąpi tamtego i wszystkie dane z tamtego zostana utracone... a wiec trzeba dodac a nie zastąpić... inaczej można dodac cyferki (result1, result2 itd) ale to czasochłonne...
 
teraz zauważyłem że pierwszy plik został wysłany ale ma status na rapidshare incomplete(nie kompletny) natomiast drugi plik niestety nie został wysłany...

Dodane 5 min po :
Ok! juz wszystko działa, trzeba bylo poprostu poczekać
A o to listing , widze ze problemy były:
Kod:
File /mnt/ext/Public/kisspclink.exe has 4096010 bytes. Calculating MD5HEX...
MD5HEX is a27eb172adde14fa97591b823cc69063 (4096010 bytes analyzed)
Trying to upload to your prem account.
Getting upload server infos.
Uploading to rs445l3.rapidshare.com
Upload chunk is 1024000 bytes starting at 0.
Sending 1024000 bytes.
Server response:
savedfiles=1 forbiddenfiles=0 premiumaccount="blalbal" freeowner=0
File1.1=http://rapidshare.com/files/144440768/kisspclink.exe.html
File1.2=http://rapidshare.com/files/144440768/kisspclink.exe?killcode=16600709207015034274
File1.3=1024000
File1.4=Incomplete

Found .uploaddata! Overriding settings and trying to resume.
Uploadserver=rs445l3.rapidshare.com:80
File-ID=144440768
Killcode=16600709207015034274
Checking if RS gives an OK and the position...
All ok. The upload stopped at 1024000. Trying to resume.
Upload chunk is 1024000 bytes starting at 1024000.
Sending 1024000 bytes.
Server response:
CHUNK,2048000,d60030b14dcababe7dbe98cc85133e2e
Chunk upload completed! Uploaded=2048000
Found .uploaddata! Overriding settings and trying to resume.
Uploadserver=rs445l3.rapidshare.com:80
File-ID=144440768
Killcode=16600709207015034274
Checking if RS gives an OK and the position...
All ok. The upload stopped at 2048000. Trying to resume.
Upload chunk is 1024000 bytes starting at 2048000.
Sending 1024000 bytes.
Server response:
CHUNK,3072000,33ff272c691c8178b039dcbfcb33d6e4
Chunk upload completed! Uploaded=3072000
Found .uploaddata! Overriding settings and trying to resume.
Uploadserver=rs445l3.rapidshare.com:80
File-ID=144440768
Killcode=16600709207015034274
Checking if RS gives an OK and the position...
All ok. The upload stopped at 3072000. Trying to resume.
Upload chunk is 1024000 bytes starting at 3072000.
Sending 1024000 bytes.
Server response:
CHUNK,4096000,883d3e567d75b8e6040fdaefe0e19503
Chunk upload completed! Uploaded=4096000
Found .uploaddata! Overriding settings and trying to resume.
Uploadserver=rs445l3.rapidshare.com:80
File-ID=144440768
Killcode=16600709207015034274
Checking if RS gives an OK and the position...
All ok. The upload stopped at 4096000. Trying to resume.
Upload chunk is 10 bytes starting at 4096000.
Sending 10 bytes.
Server response:
COMPLETE,a27eb172adde14fa97591b823cc69063
Upload completed! MD5HEX=a27eb172adde14fa97591b823cc69063 Checking MD5...
MD5-check passed. Upload OK! Saving status to rsapiuploads.txt
File /mnt/ext/Public/Macromedia.txt has 598 bytes. Calculating MD5HEX...
MD5HEX is eee4a3b219c6e5d5e46f61b40ae5f754 (598 bytes analyzed)
Trying to upload to your prem account.
Getting upload server infos.
Uploading to rs280l3.rapidshare.com
Upload chunk is 598 bytes starting at 0.
Sending 598 bytes.
Server response:
savedfiles=1 forbiddenfiles=0 premiumaccount="blabal" freeowner=0
File1.1=http://rapidshare.com/files/144444190/Macromedia.txt.html
File1.2=http://rapidshare.com/files/144444190/Macromedia.txt?killcode=8641246161295513767
File1.3=598
File1.4=EEE4A3B219C6E5D5E46F61B40AE5F754
na rapidshare pliki status maja "Normal Download"
czemu takie bledy byly ?
 
rozumię że jak wyłącze putty to upload.sh bedzie włączony ?
I jak sprawdzić czy jest on włączony (jest w spisie procesow?) ?
No i problem jest że ustawiłem sobie na nocke plik upload.sh dzisiaj sprawdzam jest plik result ale pusty, a w rapidshare zaden plik nie został wysłany :( Co może być nie tak ?
 
jak zamykasz putty to proces sie zamyka

zrob:
# ipkg install screen

nastepnie uruchom swoj plik upload.sh na screenie czyli
# screen upload.sh

nacisnij kombinacje CTRL+A+D
wyjdzie z screenu zostawiajac uruchomiona sesje

aby powrocic do sesji napisz
# screen -r

wyswietlenie wszystkich procesow
# ps

wytnij z wyjscia (lista procesow) tylko linie w ktorej jest upload.sh
# ps | grep upload.sh