Forum Linux.pl

System => Administracja => Wątek zaczęty przez: Paweł Zbroszczyk w 2020-11-29, 11:59:43

Tytuł: Problem ze skryptem przeniesionym na nową maszynę
Wiadomość wysłana przez: Paweł Zbroszczyk w 2020-11-29, 11:59:43
Witam

Mam taki fragment skryptu:
"BAZY=/var/lib/firebird/data
KOPIE=/server/kopie-pcb
MAILTO=

FB_PASS=/etc/firebird/2.1/SYSDBA.password

[ ! -r $FB_PASS ] && exit

source $FB_PASS && export ISC_USER ISC_PASSWORD
"
Jak próbuję go uruchomić na nowej maszynie to dostaję komunikat :
source: not found
shopt: not found

Oczywiście plik jest we wskazanym miejscu.

Możecie podpowiedzieć co może być przyczyną ?
Tytuł: Odp: Problem ze skryptem przeniesionym na nową maszynę
Wiadomość wysłana przez: Paweł Kraszewski w 2020-11-29, 14:20:35
Za mały fragment na sensowną odpowiedź. Co prawda komunikat błędu sugeruje raczej sh niż bash, ale poczytaj o debugowaniu skryptów (https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html).

Tytuł: Odp: Problem ze skryptem przeniesionym na nową maszynę
Wiadomość wysłana przez: Paweł Zbroszczyk w 2020-11-29, 14:48:12
Aż tak bardzo nie siedzę językach prog.
Może screen coś rozjaśni.W załączniku
Lub oczywiście cały skrypt mogę wrzucić.
Tytuł: Odp: Problem ze skryptem przeniesionym na nową maszynę
Wiadomość wysłana przez: Paweł Kraszewski w 2020-11-29, 15:02:08
Wygląda na to, że skrypt jest napisany w bashu (choćby użycie shopt) a próbujesz/system próbuje odpalić go jako skrypt sh (pod bashem błąd source wygląda inaczej, pod sh - tak jak w twoim przykładzie).

Upewnij się, że pierwsza linijka skryptu ma dokładnie postać, bez niczego przed, bez niczego powyżej.
#!/bin/bash

... reszta skryptu
Tytuł: Odp: Problem ze skryptem przeniesionym na nową maszynę
Wiadomość wysłana przez: Paweł Zbroszczyk w 2020-11-29, 15:11:27
Ok

Większy kawałek.
Ale jest bin/sh

#!/bin/sh

# wersja z 2009.02.25

BAZY=/var/lib/firebird/data
KOPIE=/server/kopie-pcb
MAILTO=

FB_PASS=/etc/firebird/2.1/SYSDBA.password

[ ! -r $FB_PASS ] && exit

source $FB_PASS && export ISC_USER ISC_PASSWORD

#source /etc/default/locale && export LANG

#umask 0027

LOCKFILE=/var/lock/local-pcbbackup

if [ -x /usr/bin/lockfile-create ]
then
  if ! LOCK=`lockfile-create $LOCKFILE &> /dev/null || lockfile-create --retry 1 $LOCKFILE &> /dev/null`
  then
    [ -z $MAILTO ] || echo $LOCK $LOCKFILE | mail -s "[UWAGA] poprzednia kopia baz ciagle sie robi" $MAILTO
    exit
  fi
  lockfile-touch $LOCKFILE &
  LOCKTOUCHPID="$!"
fi

[ -d $KOPIE ] || mkdir $KOPIE
rm -f $KOPIE/*.gdb $KOPIE/*.gbk $KOPIE/*.gfix $KOPIE/*.gbr $KOPIE/*.ngdb $KOPIE/*.rst

shopt -qs nullglob
for BAZA in $BAZY/[[:alnum:]]*.gdb
Tytuł: Odp: Problem ze skryptem przeniesionym na nową maszynę
Wiadomość wysłana przez: Paweł Kraszewski w 2020-11-29, 18:18:29
Cytuj
Ale jest bin/sh

No to jest źle. Powłoka /bin/sh nie ma ani polecenia source ani shopt. One są z powłoki /bin/bash. Możliwe, że na poprzednim systemie /bin/sh było symlinkiem do /bin/bash i dlatego działało.
Tytuł: Odp: Problem ze skryptem przeniesionym na nową maszynę
Wiadomość wysłana przez: Paweł Zbroszczyk w 2020-11-29, 18:55:45
To mogę sprawdzić.

Natomiast pytanie jak można to naprawić?
Czy link symboliczny wprost załatwi sprawę i jak go ustawić?

Poza tym ten sam skrypt zwraca również błąd  brak polecenia gbak co sugeruje ,że Path jest nie ustawiony.
Sprawdzałem w starym systemie , ale bashsrc nie znalazłem żadnej definicji Path.
Tytuł: Odp: Problem ze skryptem przeniesionym na nową maszynę
Wiadomość wysłana przez: Paweł Kraszewski w 2020-11-29, 19:07:14
Cytuj
Aż tak bardzo nie siedzę językach prog.
Cytuj
Czy link symboliczny wprost załatwi sprawę i jak go ustawić?
Nie, takich rzeczy w systemie nie rób, jeżeli nie masz wiedzy, w jaki sposób to wpływa na system. Po prostu popraw pierwszą linijkę skryptu na bash według mojego przykładu i tyle.

A program gbak jest składnikiem narzędzi do zarządzania bazą firebird (https://www.firebirdsql.org/file/documentation/html/en/firebirddocs/gbak/firebird-gbak.html).
Tytuł: Odp: Problem ze skryptem przeniesionym na nową maszynę
Wiadomość wysłana przez: Paweł Zbroszczyk w 2021-02-09, 11:51:59
Witam.Poprawiłem

Teraz jest jednak problem ze zmienną PATH.
Muszę ją ustawić dla /opt/firebird/bin , bo nie może dobrać się do poleceń.

Jak to zrobić poprawnie i skutecznie?
Tytuł: Odp: Problem ze skryptem przeniesionym na nową maszynę
Wiadomość wysłana przez: Paweł Kraszewski w 2021-02-11, 18:48:44
Linijka będzie brzmiała dosłownie (nie przekręć żadnego znaku, nie dodawaj żadnych spacji):

export PATH=/opt/firebird/bin:$PATH

Możesz dodać ją na przykład do pliku .profile w katalogu domowym użytkownika, który ma mieć dostęp do tych aplikacji.