Nagrywanie p
Nagrywanie płyt przy pomocy skryptu uruchamianego z udziału samby
Witam.
Tak się zastanawiałem, czy da się skonstruować jakiś plik wykonywalny, który uruchamiany przez użytkownika nie w konsoli może wykonać jakieś polecenia na serwerze. Chodzi o stworzenie takiego udziału, żeby można było tam wrzucić pliki i klikając inny plik wszystko z udziału się nagra. Chyba, że ma ktoś inny pomysł uruchomienia nagrywarki serwerowej.
Tak się zastanawiałem, czy da się skonstruować jakiś plik wykonywalny, który uruchamiany przez użytkownika nie w konsoli może wykonać jakieś polecenia na serwerze. Chodzi o stworzenie takiego udziału, żeby można było tam wrzucić pliki i klikając inny plik wszystko z udziału się nagra. Chyba, że ma ktoś inny pomysł uruchomienia nagrywarki serwerowej.
- marcin1982
- Moderator
- Posty: 1732
- Rejestracja: 05 maja 2011, 12:59
- Lokalizacja: Zagłębie Dąbrowskie
Myślę, że przy pomocy poleceń opisanych tutaj: http://linux4u.w.interia.pl/cdrw.html można skonstruować skrytp, który najpierw utworzy obraz *.iso z katalogu, a następnie go nagra. Pozostaje więc tylko kwestia zdalnego uruchomienia go na serwerze. To co może być nieaktualne w tym opisie:
oraz sposób wykrywania (nomenklatura) urządzeń napędów: /dev/sr0 ; /dev/sr1 zamiast /dev/hdc.
Kod: Zaznacz cały
[root@localhost marcin]# apt-get install mkisofs
Reading Package Lists... Done
Building Dependency Tree... Done
Selecting cdrkit-genisoimage for 'mkisofs'
0 aktualizowanych, 0 nowo instalowanych, 1 przeinstalowywanych, 0 removed and 0 not upgraded.
Skrypt do wypalenia zawartości folderu jest prosty.
To będzie działąć jeśli ktoś mi podpowie jak zatrzymać skrypt w oczekiwaniu na czystą płytę.
Z tym, że nie wiem jak go wykonać, żeby nie trzeba było się logować przez ssh. Tak żeby zwykły użytkownik mógł nagrać płytę na serwerowej nagrywarce.
Kod: Zaznacz cały
tar -cvzf /dev/stdout /home/nagraj | split -d -b 4000m - /home/nagraj/temp/file.tgz.
ile=`ls /home/nagraj/temp/ | wc -l`
i=0
for ((i=0;i<$ile;i++))
do
echo $i
mkisofs -J -r -v -V nagrania -o /home/nagraj/nagrania.iso /home/nagraj/temp/file.tgz.0$i
cdrecord -v -eject dev=/dev/scd0 /home/nagraj/nagrania.iso
i=$(($i+1))
done
rm -R /home/nagraj/*
Z tym, że nie wiem jak go wykonać, żeby nie trzeba było się logować przez ssh. Tak żeby zwykły użytkownik mógł nagrać płytę na serwerowej nagrywarce.
Z tego co wiem, to przez sambę tego skryptu nie wykonasz. Klinięcie spowoduje wykonanie skryptu lokalnie. Rozwiązaniem byłoby zrobienie skryptu www, albo automatycznie w cronie co jakiś czas wykonywanie tego skryptu, przy czym musiałbyś rozbudować go o obsługę wszystkich możliwości błędów. Np. sprawdzanie, czy coś jest do wypalenia w tym katalogu, czy jest płyta w nagrywarce, i czy jest to płyta nadająca się do wypalenia. Jeśli jeden z powyższych warunków zwróci:
to skrypt zakończy się błędem. I tak w kółko, aż zostaną wszystkie warunki spełnione.
Oczywiście, jeśli więcej użytkowników miałoby z niego korzystać to musiałbyś rozbudować skrypt o kolejki np. według daty umieszczenia. Wszystko da się zrobić, ale będzie dużo pisania.
Kod: Zaznacz cały
false
to skrypt zakończy się błędem. I tak w kółko, aż zostaną wszystkie warunki spełnione.
Oczywiście, jeśli więcej użytkowników miałoby z niego korzystać to musiałbyś rozbudować skrypt o kolejki np. według daty umieszczenia. Wszystko da się zrobić, ale będzie dużo pisania.
Użycie crona chyba nie ma sensu, chyba łatwiej rozbudować webmina o przycisk uruchamiający skrypt. Nie jest to w sumie bardzo potrzebne bo aż tak dużo ludzi z tego nie korzysta, traktuję to bardziej jako ciekawostkę.
Mimo wszystko dziękuję za odpowiedź, choć wykonywania akcji na serwerze bez logowania się dalej mnie ciekawi.
Mimo wszystko dziękuję za odpowiedź, choć wykonywania akcji na serwerze bez logowania się dalej mnie ciekawi.
W biurze nie mam mamy/babci, a problem by się pojawił jakby ludzie wrzucali, a potem nie zmieniali płyt. Ty sobie chcesz coś nagrać i dopiero n-ta płyta wychodzi z Twoim nagraniem, do tego musisz wszystkie po drodze sprawdzać, czy to aby nie ta. Raczej by się to nie sprawdziło zwłaszcza, że czasem musi być coś zrobione szybko i bezbłędnie.