Wysy

Potrzebujesz pomocy z C, C++, perl, python, itp.
redgrist
Posty: 64
Rejestracja: 23 kwietnia 2010, 11:19
Lokalizacja: Trójmiasto

Wysyłanie pliku na FTP do katalogu z nazwy pliku

Post autor: redgrist »

Witajcie.
Mam taki o to problem.
Mam plik s-12_FV22222_06112012.txt, chciałbym aby ten plik został wysłany na serwer ftp, ale aby ten konkretny plik został wysłany do katalogu s-12 (taki jak w nazwie).

Plik musiałby być wysłany do s-12 i dodatkowo jeszcze przed wysłaniem zamieniony na plik bez s12_ czyli na plik FV22222_06112012.txt.

Czy ktoś może miał podobny problem, może ktoś ma jakiś pomysł? Ja niestety nie jestem w stanie lftp tego wykonać. Może to nie odpowiedni program, ale zakładam, że raczej chodzi o jakiś logiczny skrypt.

Pliki mogą się różnić może być s-13_FV22222_06112012.txt, s-14_FV22222_06112012.txt itd. każdy jednak w zmienionej postaci musi trafić do katalogu s-13 lub s-14 itd.

Pozdrawiam.
Awatar użytkownika
lun
Beginner
Posty: 266
Rejestracja: 01 lutego 2010, 22:06
Lokalizacja: Warszawa

Post autor: lun »

Cześć. Na wstępie kilka pytań:
1. Czy długość nazwy pliku jest niezmienna
2. Czy katalogi na serwerze ftp istnieją (s-12, s-13, s-XX, ...), czy przed kopiowaniem plików należy je tworzyć?

Pomysł mam taki:
Skryptem bash wykonujesz: zmiana nazwy pliku, otwarcie połączenia FTP, wejście do katalogu, wrzucenie pliku, zamknięcie połączenia. To wszystko w pętli.
redgrist
Posty: 64
Rejestracja: 23 kwietnia 2010, 11:19
Lokalizacja: Trójmiasto

Post autor: redgrist »

Witaj.
1 Długość nazwy pliku jest zmienna.
2 Tak, katalogi istnieją.

Sam plan działania nie jest problemem, pytanie jak i w jakiej postaci napisać skrypt? Odczyt "nagłówka" do _ potem obcięcie nazwy bez s-12 i wysłanie pliku na serwer do katalogu.

.
Awatar użytkownika
lun
Beginner
Posty: 266
Rejestracja: 01 lutego 2010, 22:06
Lokalizacja: Warszawa

Post autor: lun »

Edycja:
Widzę że trochę bzdur popisałem, więc poprawiam ;-)
Część zmieniająca nazwy plików działa już prawidłowo.


Będę pisał bez sprawdzania, ale może z tego da się coś ułożyć.
Oczywiście przetestuj na jakimś pliku o podobnej nazwie.

Zmiana nazwy pliku:

Kod: Zaznacz cały


for filename in s-*.txt
do
#echo $filename;
F_part=`echo $filename|cut -d "_" -f2,3`;
#echo $F_part;
mv $filename $F_part;
done



Połączenie ftp:

Kod: Zaznacz cały

ftp [I]hostname[/I]
cd katalog
mput *.txt
close
Oczywiście część FTP możesz również zawrzeć w skrypcie. Jeśli plików masz mało, możesz otwierać połączenie ftp, wrzucać plik i zamykać dla każdego pliku. Jeśli masz ich dużo, to raczej jest to mało efektywne rozwiązanie. Wtedy możesz skrypt podzielić na 2 części, w jednej zmieniać hurtowo nazwy, w drugiej kopiować do odpowiednich katalogów.

To tylko taki niedopracowany pomysł, ale może naprowadzi Cię na rozwiązanie problemu.
redgrist
Posty: 64
Rejestracja: 23 kwietnia 2010, 11:19
Lokalizacja: Trójmiasto

Post autor: redgrist »

Witaj, dziękuję za poświęcony czas.

Wszystko jest w skrypcie jasne, ale jest jeden podstawowy problem. Te wszystkie operacje nie prowadzą do wysłania pliku po obcięciu członu przed _ do odpowiedniego katalogu na ftp.
To jest prawdziwy problem, jak posegregować te pliki po nazwach do katalogów i jak obciąć ich wyróżnik i je tam wysłać...
Awatar użytkownika
lun
Beginner
Posty: 266
Rejestracja: 01 lutego 2010, 22:06
Lokalizacja: Warszawa

Post autor: lun »

Szczerze mówiąc to już w moich dwóch postach masz w sumie pomysł jak to zrobić. Ale wiem również, że często mało kto łapie moje skróty myślowe, więc może nie być to takie oczywiste ;->

Kod: Zaznacz cały

for filename in s-*.txt
do
#echo $filename;
F_part=`echo $filename|cut -d "_" -f2,3`;
S_part=`echo $filename|cut -d "_" -f1`;
#echo $F_part;
mv $filename $F_part;

ftp hostname
cd $S_part
mput $F_part
close


done
Poza tym, należałoby mówić szczerze że potrzebujesz napisania takiego skryptu, a nie pomocy w jego napisaniu :P
redgrist
Posty: 64
Rejestracja: 23 kwietnia 2010, 11:19
Lokalizacja: Trójmiasto

Post autor: redgrist »

Witaj.
Ponownie dziękuję za pomoc, nie, nie chodziło o napisanie, zwyczajnie nie zatrybiłem w poprzednim poście co i jak, teraz jak jest to w jednej "kupie" dopiero rozumiem o co chodzi.
Już w tej chwili sobie spokojnie dopasuję skrypt do wszystkich plików itd.
Wielkie dzięki za podpowiedź.
ODPOWIEDZ