Skocz do zawartości
Zaloguj się, aby obserwować  
bartek24m

shell - baza danych

Polecane posty

Hej

 

napisałem sobie taki maly skrypcik do pobierania plikow z rapidshare ktory nie wymaga wpisywania loginu i hasla do pobrania

 

jednak chciałbym aby przeslana z formularza do bazy danych nazwa_katalogu była wyciagana z pod ssh

 

aktualnie wyglada tak:

 

#! /bin/bash

if [ `du /home/pobieralnia/config/lista.txt | cut -f 1` -gt 0 ]; then

wget -P /home/pobieralnia/$nazwa_katalogu --http-user=xxxxx --http-passwd=zzzzzzz -i /home/pobieralnia/config/lista.txt

echo -n > /home/pobieralnia/config/lista.txt

echo `date` >> /home/pobieralnia/logi.txt

fi

 

jak zrobić żeby w miejscu $nazwa_katalogu

 

pojawiła mi sie wartość

z bazy danych - tabeli "nazwa_katalogu"

 

oczywiście mogę wpisać do skryptu

 

mysql -u root -p pass nazwa_bazy SELECT * FROM nazwa_bazy

jednak nie znam w ogóle dokładnej składni polecenia

 

 

pod PHP to co chce osiągnąć wygląda mniej wiecej tak:

 

 

while($katalog = mysql_fetch_assoc(mysql_query("SELECT * FROM nazwa_bazy")))

$katalog['nazwa_katalogu'];

 

jednak jak przełożyć to na skrypt .sh

 

 

dzięki za pomoc mam nadzieje ze nie jest to zbyt skomplikowane :P

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Myślę, że tak możesz to zrobić:

 

katalog=`
mysql -u user --password=password << eof
use twoja_baza;
SELECT nazwa_katalogu FROM tabela WHERE ....;
eof`

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

mam problem z tym jeszcze :/

 

mianowicie robie taki test.sh

 

folder=`
mysql -u uzytkownik --password=haslo << eof
use baza_danych;
SELECT tabelka FROM linki_rs LIMIT 1;
eof`
echo $folder

 

i pokazuje mi zamiast tylko i wylacznie zawartości tabelki

 

tabelka nazwa_folderu

 

jak zrobic zeby nie pokazywalo mi "tabelka"

tylko samą nazwe folderu

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
folder=`
mysql -u uzytkownik --password=haslo << eof
use baza_danych;
SELECT tabelka FROM linki_rs LIMIT 1;
eof` | cut -f2-
echo $folder

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

rozwiązałem problem trochę inaczej

 

#! /bin/bash
folder=`mysql -u uzytkownik --password=pass << eof
use baza_danych;
SELECT folder FROM linki_rs LIMIT 1;
eof`
katalog=`echo $folder | cut -d" " -f 2`
if [ `du /home/pobieralnia/config/lista.txt | cut -f 1` -gt 0 ]; then 
wget -P "/home/pobieralnia/$katalog" --http-user=xxxx --http-passwd=zzzz -i /home/pobieralnia/config/lista.txt
echo -n > /home/pobieralnia/config/lista.txt
echo `date` >> /home/pobieralnia/config/logi.txt
fi

 

i tutaj moje ostatnie pytanie ...

 

 

dlaczego pod ssh na koncie root chodzi to bez problemu

a gdy odpalam to plikiem plik.php

<?

exec('sh pobierz.sh');

?>

pobiera mi sie do glownego katalogu

tak jak by nie bylo $katalog :/

 

dla formalności sprawdziłem i wpisując na konsoli

php plik.php wszytko działa

 

czy to może być wina ustawień serwera ?

jak przestawić to żeby apache dawało taki sam efekt jak ja pod rootem :/

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

panowie problem rozwiązany :P chodzi oto ze apatche potrzebuje pelnej sciezki do pliku

a z pod konta roota nie wymagane to jest

 

a tak btw to mam teraz nowe utrapienie:

 

folder=`/usr/local/bin/mysql -u uzytkownik --password=xxx << eof
use tabela;
SELECT folder FROM linki_rs LIMIT 1;
eof`
katalog=`echo $folder | cut -d" " -f 2`

 

oczywiscie zeby zadzialalo pod rootem wpisujemy samo mysql po folder= `

 

nowy problem polega na tym ze pobiera mi tylko 1 wyraz :/

jak np. w tabeli jest "nowy folder"

to pliki zapisywane są w folderze "nowy" :/

 

próbowałem już

$folder | awk '{ print $2 }'

 

jednak to samo

 

wie ktoś jak można rozwiązać ten problem ?

 

 

oczywiscie w cudzyslowie jest

 

wget -P "/home/$katalog" --http-user=qqq --http-passwd=xxx -i /home/lista.txt

 

ale nic nie daje

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×