1 (edytowany przez Bartekk 2013-07-04 23:40:18)

Temat: Skrypt kopiowania plików - NSA310

Witam, prawie ze 100% zadowoleniem przeszedłem na openwrt z debiana, lecz trapi mnie kolejny problem z obsługą tego systemu. Na debianie miałem skrypt, który pozwalał na automatyczne kopiowanie plików podłączonych do urządzenia za pomocą wbudowanego przycisku COPY. Niestety owy skrypt na openwrt niestety nie działa. Czy jakaś mądrzejsza głowa mogłaby rzucić okiem co jest nie tak? Pozdrawiam Bartosz!

copy.sh

#!/bin/bash

NEWDIR=/mnt/sdb1/home/wspolne/zgrane-z-usb/$(date + "%d-%m-%Y")
mkdir $NEWDIR
chmod 777 $NEWDIR
cp -nR /mnt/sdc1/*.* $NEWDIR

Input-event-daemon.conf

[Global]
listen = /dev/input/event0
[Keys]
POWER = poweroff
COPY = /sbin/copy.sh
RESTART = reboot

Ustawiony chmod +x dla skryptu copy. Wyciąłem również ze skryptu funkcje odpowiadające montowaniu dysku, ponieważ zauważyłem, że w openwrt następuję to automatycznie.

2 (edytowany przez build000 2013-07-05 06:44:59)

Odp: Skrypt kopiowania plików - NSA310

...
...$(date "+%d-%m-%Y")
...

Nie wiem jak z ideą w ogóle bo chwilowo nie używam ale błąd, który wyłapałem podałem powyżej (powinno chyba być tak jak napisałem). Zastanawia mnie tylko tak ogólnie jedna kwestia w związku z formą daty będącej jednocześnie nazwą utworzonego katalogu po naciśnięciu przycisku COPY. A co jeżeli tego samego dnia wykonasz tą samą operacje ? Czy dla jasności tych czynności nie warto było by dodać godziny ?
Np. tak:

date "+%d-%m-%Y_%H.%M"

Wtedy możesz zrezygnować z opcji "-n" w funkcji/pleceniu "cp". Mało wątpliwe zresztą w praktyce, że taka sytuacja zaistnieje. Oprócz tego uchronisz się od sytuacji, że wersja z danej godziny jest prawidłowa lub nie i która o której godzinie jest prawidłowa. Więcej miejsca może to zająć docelowo za to będzie wybór i znajdziesz tą właściwą i poprawną tak w ogóle wersję danego pliku, jak się powtórzy - przydatne przy jakichś automatach z wznawianiem lub programach/usługach typu pyload.


Poza tym pytanie podstawowe - a masz tam wgranego bash'a ? Czy jedziesz na tym co obsy zapodał w domyśle...czyli ash ?

#!/bin/bash
...

Tak się tylko domyślam, że działasz na gotowym buildzie obsego i nie wgrałeś jeszcze bash biorąc pod uwagę zacytowany plik /etc/input-event-daemon.conf . Poza tym upewnij się po wgraniu bash czy masz odwołanie do tej powłoki w pliku /etc/shells.
Powinno to docelowo wyglądać mniej więcej tak:

/etc/shells:

/bin/ash
/bin/bash
/bin/rbash

Tak w ogóle to nie wiem czy w związku z powłoką nie wystarczyło by po prostu zmienić początek:

#!/bin/sh
...

Też chyba zadziała w/w skrypt (pomijając oczywiście błąd w "date" ).

3

Odp: Skrypt kopiowania plików - NSA310

skoro działało na debianie to po zainstalowaniu bash'a powinno ruszyć smile

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

4 (edytowany przez build000 2013-07-05 08:21:18)

Odp: Skrypt kopiowania plików - NSA310

To nie jest argument - ale faktycznie - w tym przypadku powinno również pomóc samo zainstalowanie bash i poprawienie oczywistego błędu w poleceniu date.
Chociaż jak obsy sam celnie stwierdził 2 posty poniżej - po co bash ? - jeżeli to ma być tylko dla tego skryptu to szkoda zachodu i dodatkowego zużycia RAM, zasobów, i.t.d. dla bardziej wymagającego bash'a. Prościej wyedytować skrypt.

5

Odp: Skrypt kopiowania plików - NSA310

A faktycznie jeszcze ten nieszczesny plusik uciekł za cudzysłów smile

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

6

Odp: Skrypt kopiowania plików - NSA310

Pomijam fakt że instalowanie basha dla takiego kilkulinijkowego skryptu to już przesada.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7

Odp: Skrypt kopiowania plików - NSA310

Tak jest źle :

 
date + "%d-%m-%Y"

Tak jest poprawnie :

date +"%d-%m-%Y"

Tylko spacja po plusie jest niepotrzebna.

install.sh - Aktualizacja systemu, sysinfo.sh - Info.o systemie, openvpn-auth.sh - Login dla OpenVPN
Tu moje skrypty na GitHub

8 (edytowany przez build000 2013-07-05 09:02:44)

Odp: Skrypt kopiowania plików - NSA310

Dla jasności składni polecenia chyba bardziej właściwym jest umieszczenie plusa w cudzysłowiu a nie przed. Chociaż w przypadku bash'a, ash'a czy sh w openwrt jest to pewno bez znaczenia. Generalnie istotne jest by odwołać się do pierwszej zmiennej informując tym samym polecenie date, że format będzie niestandardowy. Chociaż to pewno bzdet i coś z zakresu "wyższości św. W.N. nad św. B.N.".
big_smile
Także pisanie, że tak jest poprawnie zdaje się być nadużyciem...co najwyżej można stwierdzić, że "tak też jest poprawnie".

9

Odp: Skrypt kopiowania plików - NSA310

Dziękuje bardzo za szybki odzew. Faktycznie, nie zwróciłem uwagi na brak basha (początki linuxowania ^^). Co do godziny kolega również miał rację, nie zwracałem uwagi, że tego samego dnia mogę kopiować wiele danych. Poprawiony skrypt:

#!/bin/sh

NEWDIR=/mnt/sdb1/home/wspolne/zgrane-z-usb/$(date +"%d-%m-%Y__%H.%M")
mkdir $NEWDIR
chmod 777 $NEWDIR
cp -R /mnt/sdc1/*.* $NEWDIR

umount /mnt/sdc1/

Wszystko chodzi jak ma chodzić. Dzięki i pozdrawiam, Bartosz!

10 (edytowany przez Rafciq 2013-07-05 09:20:26)

Odp: Skrypt kopiowania plików - NSA310

build000 napisał/a:

Dla jasności składni polecenia chyba bardziej właściwym jest umieszczenie plusa w cudzysłowiu a nie przed. Chociaż w przypadku bash'a, ash'a czy sh w openwrt jest to pewno bez znaczenia. Generalnie istotne jest by odwołać się do pierwszej zmiennej informując tym samym polecenie date, że format będzie niestandardowy. Chociaż to pewno bzdet i coś z zakresu "wyższości św. W.N. nad św. B.N.".
big_smile
Także pisanie, że tak jest poprawnie zdaje się być nadużyciem...co najwyżej można stwierdzić, że "tak też jest poprawnie".

Skąd wziąłeś tą wiedzę?
Sprawdziłeś to?

install.sh - Aktualizacja systemu, sysinfo.sh - Info.o systemie, openvpn-auth.sh - Login dla OpenVPN
Tu moje skrypty na GitHub

11 (edytowany przez build000 2013-07-05 10:11:41)

Odp: Skrypt kopiowania plików - NSA310

Spodziewałem się ponownie dziwnego pytania z Twojej strony jak w innym temacie - tak, sprawdziłem. Piszą tak np. autorzy/autor programu. Ja wiem: "date --help" ? Może też być "man date" albo "info date".
Poza tym co do działania polecenia z proponowaną przeze mnie składnią - nic prostszego tylko sprawdzić w praktyce.
big_smile

12

Odp: Skrypt kopiowania plików - NSA310

Gdzie tak piszą? Podaj przykład.

install.sh - Aktualizacja systemu, sysinfo.sh - Info.o systemie, openvpn-auth.sh - Login dla OpenVPN
Tu moje skrypty na GitHub

13 (edytowany przez build000 2013-07-05 11:40:19)

Odp: Skrypt kopiowania plików - NSA310

To może dla zobrazowania genealogia polecenia na prawie wciąż tym samym przykładzie:

Zacznijmy od końca:

date "+%d-%m-%Y__%H.%M"
date +"%d-%m-%Y__%H.%M"
date +%d-%m-%Y__%H.%M

Powyższe 3 polecenia zwrócą tzw. format na wyjściu lub drukowanie daty lub jak tam przyjęło potocznie się nazywać - ten sam wynik wyjściowy. Czyli widać wyraźnie, że operatorem warunkującym zmianę formatu i niezmiennym w każdym z tych poleceń jest "+". To plus mówi poleceniu date co ma dalej zrobić z następującymi i określonymi oraz w określony sposób (poprzedzone %) zmiennymi, następującymi po nim samym. Dlaczego nie jest wymagany cudzysłów ? Ponieważ jest to nieprzerwany ciąg znaków/zmiennych określonych w poleceniu date - dopuszczalna forma tego polecenia bez dodatkowych warunków w pisowni.
Co jednak się stanie gdy zechcemy dla naszej wymarzonej formy prezentacji rozsunąć owe zmienne lub coś dodać?
Zwyczajnie polecenie się nie wykona od momentu, w którym zaburzymy nieprzerwany ciąg znaków - czyli generalnie nie wykona się w całości. I co wtedy przychodzi z pomocą ? Ano właśnie cudzysłów...cudzysłów do naszej wymarzonej formy wyświetlania, czyli warunek w pisowni uwzględniający spacje, spacje z innymi znakami, całymi słowami, np:

date "+%d-%m-%Y oraz obecnie panująca nam godzina: %H.%M"

Wyświetli się również tak i to samo:

date +"%d-%m-%Y oraz obecnie panująca nam godzina: %H.%M"

Jednak istotą polecenia jest + i następujące po nim zmienne. Czyli historycznie w naszym zmodyfikowanym wyglądzie najważniejsze było dodanie cudzysłowu a nie zastanawianie się gdzie ma zaistnieć plus - czy przed czy wewnątrz cudzysłowu - bo istotny w tym wszystkim jest format wyjściowy. Oczywiście gdy przerwiemy ciąg zmiennych formatowania wyświetlania daty oraz nie używając cudzysłowu i pojawią się w nim inne znaki/słowa wraz ze spacjami polecenie się nie wykona (inne znaki mogą istnieć jakiekolwiek o ile nie jest to spacja).
A resztę można przeczytać w wielu innych źródłach mędrców od tego systemu skoro man, --help, info nie jest wystarczające.

14

Odp: Skrypt kopiowania plików - NSA310

Zacząłeś dywagacje na temat miejsca gdzie ma być plus. Następnie napisałeś wywód dotyczący cudzysłowów.
Zadaj sobie pytania: Co wniosłeś swoimi wypowiedziami do kolejnego wątku? Jaką wartość z Twoich wypowiedzi uzyskał rozpoczynający wątek i jak dalece mu pomogłeś?

install.sh - Aktualizacja systemu, sysinfo.sh - Info.o systemie, openvpn-auth.sh - Login dla OpenVPN
Tu moje skrypty na GitHub

15 (edytowany przez build000 2013-07-05 12:56:48)

Odp: Skrypt kopiowania plików - NSA310

Więc sam zadaj sobie teraz pytanie: "Po co w zasadzie sam zadałem te nie mające nic wspólnego z tematem niedorzeczne pytania ?:"

Skąd wziąłeś tą wiedzę?
Sprawdziłeś to?
Gdzie tak piszą? Podaj przykład.

Co one wnoszą i co wyjaśniają ? Masz taki specyficzny tryb rozmawiania z ludźmi czy tylko tak...jakaś dziwna maniera czy brak wychowania ? Czy oczekujesz, że nikt nie odpowie czy oczekujesz określonej odpowiedzi - a może ją już znasz i tylko tak...przeświadczony bez najmniejszej wątpliwości, że na pewno znasz prawidłową odpowiedź...zadałeś je (to owe pytanie/pytania) retorycznie ? Czy w jakiś sposób nie świadczy to o Tobie czy koniecznie chcesz zwrócić uwagę na swój poziom intelektu (bo szczerze wątpię, że punkt widzenia) i z góry ustalić pozycję pytanego ?
To i dziesiątki innych pytań...to po prostu socjotechnika. Ciemne dzieje w historii naszego kraju w innych czasach - ale pewno znasz to tylko z opowiadań.

16

Odp: Skrypt kopiowania plików - NSA310

Z szacunku do wszystkich kończę bez odpowiedzi na Twoje pytania.

install.sh - Aktualizacja systemu, sysinfo.sh - Info.o systemie, openvpn-auth.sh - Login dla OpenVPN
Tu moje skrypty na GitHub

17

Odp: Skrypt kopiowania plików - NSA310

Witam

Mam na NSA310 zainstalowanego debiana 7.1 przycisk power działa niestety nie mogę uruchomic przycisku COPY/SYNC.

Sam skrypt wywołany z konsoli kopiuje zawartość usb do wskazanego katalogu - niesty przycisk nie działa - konfiguracja jak w pierwszym poście.

18

Odp: Skrypt kopiowania plików - NSA310

Umieść sobie reboot pod przyciskiem i zobacz czy działa smile

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

19

Odp: Skrypt kopiowania plików - NSA310

Cezary napisał/a:

Umieść sobie reboot pod przyciskiem i zobacz czy działa smile

Zamieniłem przyciski POWER <-> COPY i działają smile