Ubuntu - "sudo iptables" 명령은 bash 스크립트가 아닌 터미널에서 작동합니다.

Ubuntu - "sudo iptables" 명령은 bash 스크립트가 아닌 터미널에서 작동합니다.

간단한 터미널 명령을 사용하여 iptables에 규칙을 추가했는데 문제 없이 실행되었습니다.

sudo iptables -A OUTPUT -p tcp -m string --string "facebook.com" --algo kmp -j REJECT

Bash 스크립트에서 명령을 실행하면 다음이 반환됩니다.sudo: ./script.sh: command not found

스크립트는 다음과 같습니다.

#!/bin/bash

sudo iptables -A OUTPUT -p tcp -m string --string "facebook.com" --algo kmp -j REJECT

답변1

스크립트를 실행할 수 없는 경우 적절한 셸(예: /bin/sh또는 ) 을 사용하여 호출해야 합니다 /bin/bash. 이것은 shebang 줄을 무시하고 호출 쉘을 사용하여 스크립트가 실행됩니다.

sudo /bin/sh ./script.sh

OP가 의도한 대로 스크립트를 실행하려면 스크립트에 실행 권한을 부여해야 합니다.

chmod +x script.sh
sudo ./script.sh

이 예에서 스크립트는 shebang 라인의 셸을 사용하여 실행됩니다.

관련 정보