[+] Interpreter #!/bin/bash

Tematy związane z oprogramowaniem, instalacją, konfiguracją
Awatar użytkownika
LordRuthwen
Moderator
Posty: 2351
Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?

[+] Interpreter #!/bin/bash

Post autor: LordRuthwen »

Witam.
Nie jestem pewny, czy to nadaje się do tego działu czy do programowania, ale raczej tu.

Mam taki problem:
Napisałem sobie skrypt firewalla, troszkę rozbudowany o wywoływanie innego pliku, gdzie mam IP do banowania, plik wygląda tak:

Kod: Zaznacz cały

#!/bin/bash
IPTABLES='/sbin/iptables'
$IPTABLES -A INPUT -s xx.xxx.xx.xxx -j DROP
$IPTABLES -A INPUT -s xx.xxx.xxx.xxx -j DROP
$IPTABLES -A INPUT -s xx.xx.xxx.xx -j DROP
i tak dalej...
Przy wywołaniu pliku wykonuje go, owszem, jednak śmieci mi na wyjściu takim wpisem:

Kod: Zaznacz cały

/etc/init.d/firewall.sh-ban: line 1: #!/bin/bash: No such file or directory
Zaznaczam, to nie jest komunikat o złym interpreterze, tamten brzmiałby tak:

Kod: Zaznacz cały

#!/bin/bash^M: bad interpreter: No such file or directory
I byłby spowodowany złym znakiem końca linii.

Możecie mi pomóc jakoś się tego pozbyć?
Niby skrypt działa, ale lubię mieć porządek.
* zamiast tego jest spacja.
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Typuje że masz plik w UTF-8 zapisany z BOM.

Mój plik testowy:

Kod: Zaznacz cały

#!/bin/bash
echo test
Uruchomienie:

Kod: Zaznacz cały

# ./test.sh 
./test.sh: line 1: #!/bin/bash: Nie ma takiego pliku ani katalogu
test
Sprawdzić czy plik zawiera BOM, można np. tak:
# hd test.sh
00000000 ef bb bf 23 21 2f 62 69 6e 2f 62 61 73 68 0a 0a |...#!/bin/bash..|
00000010 65 63 68 6f 20 74 65 73 74 0a |echo test.|
0000001a
Pogrubiona sekwencja to właśnie BOM. Usunąć ją można np. w vim'ie za pomocą

Kod: Zaznacz cały

:set nobomb
i zapisując plik.
Awatar użytkownika
LordRuthwen
Moderator
Posty: 2351
Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?

Post autor: LordRuthwen »

Dziękuję, pomogło :)
ODPOWIEDZ