[+] Uruchamianie skryptu przez ssh

Ogólne pytania dotyczące systemu
matz
Posty: 4
Rejestracja: 09 maja 2009, 19:43

[+] Uruchamianie skryptu przez ssh

Post autor: matz »

Witam.

Mam pewien problem (dla was pewnie jest to bardzo łatwe pytanie) jednak nie wiem o co może chodzić?

Mam Debiana. Próbuję przez ssh uruchomić jakieś skrypty, lecz każdy który próbuję odpalić, wcześniej nadałem mu prawa wykonywalne:

Kod: Zaznacz cały

chmod +x skrypt
po prostu informuje mnie komunikatem, że nie ma takiego pliku ani katalogu.

Kod: Zaznacz cały

-bash: ./demaffa: /bin/sh^M: bad interpreter: Nie ma takiego pliku ani katalogu
Mimo tego skrypt ,,demaffa'' jest w katalogu, gdzie jestem.

Dlaczego?
tomii
Junior Member
Posty: 687
Rejestracja: 21 października 2007, 13:27

Post autor: tomii »

Sprawdź czy masz podaną odpowiednią ścieżkę do interpretera(bash lub sh) podaną?
matz
Posty: 4
Rejestracja: 09 maja 2009, 19:43

Post autor: matz »

Można jaśniej? Nie jestem zaawansowany w sprawach uniksowych?
tomii
Junior Member
Posty: 687
Rejestracja: 21 października 2007, 13:27

Post autor: tomii »

A spróbuj wpisać na początek:

Kod: Zaznacz cały

/bin/sh nazwa_skryptu
i powiedz czy działa?
sigo
Junior Member
Posty: 501
Rejestracja: 21 marca 2009, 19:12

Post autor: sigo »

Najprawdopodobniej edytujesz skrypt za pomocą mcedit'a, który nie obsługuje końców linii niektórych edytorów.
Mam na myśli to, iż jeżeli początkowo napisałeś trochę kodu w innym edytorze, a następnie dokonałeś edycji i zapisałeś plik za pomocą w/w programu, to zapisałeś w dziwnym formacie/kodowaniu ten plik.

Pierwszą linią Twojego skryptu jest zapewne wskazanie na interpreter i już pierwsza linia jest uszkodzona - dlatego dostajesz błąd:

Kod: Zaznacz cały

-bash: ./demaffa: /bin/sh^M: bad interpreter: Nie ma takiego pliku ani katalogu
Dokładnie mam na myśli ciąg znaków: ^M - w ten sposób mcedit oznacza nieobsługiwane końce linii.

Kod: Zaznacz cały

istniejący interpreter - /bin/sh
nieistniejący interpreter - /bin/sh^M
By naprawić ten problem wykonaj następujące kroki:
  • 1. Otwórz skrypt w jakimś edytorze z gui (kate, kwrite, gedit, mousepad itp.) - bez problemu rozpozna końce linii.
    2. Skopiuj zawartość pliku.
    3. Usuń skrypt.
    4. Utwórz plik skryptu.
    5. Wklej do pliku treść skryptu, za pomocą wybranego edytora - nie zmieniaj go w przyszłości, by uniknąć podobnych błędów.
Przy okazji: nagłówek do skryptów w bashu, powinien wyglądać następująco:

Kod: Zaznacz cały

/bin/bash
matz
Posty: 4
Rejestracja: 09 maja 2009, 19:43

Post autor: matz »

Aha. Ciekawe...

Przepraszam, ale nie jestem zbytnio obeznany w sprawach uniksowych, mam dostęp do maszyny przez ssh (putty). Niestety nie za bardzo znam te edytory, nawet nie wiem jak je wywołać.
sigo
Junior Member
Posty: 501
Rejestracja: 21 marca 2009, 19:12

Post autor: sigo »

Usuń plik a następnie utwórz i wklej skopiowaną zawartość za pomocą wybranego edytora - powinno pomóc.

Dodano: lub zastosuj się do rady tomii - najprościej.
tomii
Junior Member
Posty: 687
Rejestracja: 21 października 2007, 13:27

Post autor: tomii »

Wpisz:

Kod: Zaznacz cały

 nano nazwa pliku
i poszukaj "^M" i usuń.
matz
Posty: 4
Rejestracja: 09 maja 2009, 19:43

Post autor: matz »

Dobrze, działa.

Nie było w plikach żadnego ,,^M'' - przynajmniej nie znalazłem..

Usunąłem te skrypty, stworzyłem nowe (touch itp.). Edytowałem przez nano, dałem dobre uprawnienia i działa.

Dziękuję Panowie:
@tomii
@sigo

Można zamknąć temat.
ODPOWIEDZ