주기적으로 방화벽을 재시작해야 하기 때문에 bash 파일을 생성하여 CRON 테이블에 추가했습니다.
터미널에서 다음 명령을 사용하여 방화벽을 다시 시작합니다.
service firewall restart
하지만 내 bash 파일( ) myscript.sh
에 다음과 같은 줄이 있는 경우:
#!/bin/sh
service firewall restart
터미널에서 (루트로) 실행하십시오.
sh myscript.sh
방화벽이 다시 시작되지 않습니다.
차이점은 무엇입니까? Bash 파일에서 서비스를 다시 시작하는 방법은 무엇입니까?
편집하다
나는 또한 다음 명령을 시도했습니다.
/etc/init.d/firewall stop
/etc/init.d/firewall start
그리고
/etc/init.d/firewall restart
또한 다음과 같이 파일을 실행해 보았습니다.
/bin/sh myscript.sh
여전히 작동하지 않습니다.
편집하다 내 bash 스크립트는 다음과 같습니다.
#!/bin/sh
if [ some statement ]; then
/etc/init.d/firewall restart # also tried: eval /etc/init.d/firewall restart
stat /some/file -c %Y > /root/statfile
# if I add any statement here it is being executed, so it is not the fault of incorrect if statement
fi
답변1
cron
쉘에 임의로 로그인하는 환경과는 다릅니다 . 귀하의 환경에는 방화벽 스크립트에 필요하지 않은 것이 있을 수 있습니다.
을 확인 /var/mail
하거나 메일 풀이 무엇이든 시도해 보십시오. Cron은 기본적으로 crontab이 특정 작업을 수행하는 사용자에게 출력을 메일로 보내지만 MTA를 구성하지 않은 경우에는 이 출력이 표시되지 않습니다. 출력 결과가 명확하지 않은 경우 set -x
스크립트 상단에 추가하거나 env
(인수 없이) 명령을 추가하고 출력을 셸에서 실행할 때 동일한 명령의 출력과 비교하십시오.
다른 모든 방법이 실패하면 출력을 게시하고가득한스크립트(편집하지 마십시오. 모든 것이 괜찮다고 생각한다고 해서 반드시 그런 것은 아니며 정보를 공개하지 않으면 도움을 받을 수 없습니다.)
답변2
너는 무엇을 할 계획이야?some statement
정제
if [ some statement ]; then ...
이건 말이 안 돼
답변3
/etc/init.d/firewall restart
대신 이렇게 하면 어떨까요 service firewall restart
?
이것이 경로일 수도 있습니다.
실행 가능하게 만드는 것을 잊지 마세요:
chmod +x myscript.sh
답변4
스크립트는 sudo를 사용하여 호출해야 합니다. 또는 sudo를 사용하여 Wheel Administrators 그룹 계정에 다른 사용자를 두는 방법도 있습니다. 이는 모두 사용 중인 배포, 사용 가능한 옵션 및 이를 사용하여 충분한 권한으로 스크립트를 실행할 수 있는 방법에 따라 다릅니다.
sudo -u [username] -S myscript.sh < password_file.txt
파일 권한을 위해 그룹 계정을 사용하는 경우 스크립트 파일(myscript.sh)의 그룹 권한에 포함되어야 하며 그룹이 액세스할 수 있는 디렉터리에 위치해야 합니다. 휠 또는 다른 그룹의 사용자는 -u [usename] 옵션을 사용하는 스크립트를 통해 호출되어야 합니다. 휠 계정을 사용할 때 cron 계정을 사용자로 사용하지 않습니다. 또한 sudo 목록에 사용자를 추가해야 합니다. Wheelset은 보안 위험이 있는 것으로 입증되었기 때문에 일부 배포판에서는 더 이상 사용되지 않습니다. 이 경우 관리 목적으로 그룹을 생성하고 해당 그룹을 사용하여 파일 권한을 얻으십시오.
sudo 목록에 사용자를 추가하는 방법은 다음에서 확인할 수 있습니다.https://www.digitalocean.com/community/tutorials/how-to-edit-the-sudoers-file-on-ubuntu-and-centos...이 튜토리얼을 가이드로 사용하세요.
또한 스크립트에 stderr 코드를 포함하거나 sdtout을 텍스트 파일로 리디렉션하는 경우 스크립트를 호출할 때 발생하는 문제에 대해 알려줍니다.
sudo를 안전하게 사용하는 방법과 기법은 다양합니다. 이는 실제로 사용자 및/또는 회사 규칙 및 보안 정책과 관련이 있습니다.