init.d 스크립트가 작동하지 않습니다 - 백그라운드에서 SSH 터널을 시작하려고 합니다.

init.d 스크립트가 작동하지 않습니다 - 백그라운드에서 SSH 터널을 시작하려고 합니다.

시작 시 실행할 간단한 파일을 가져오려고 합니다. 하지만 시작되지 않습니다. 실행하면 작동하지만 시작 시에는 작동하지 않습니다.

이것은 내 init.d 스크립트인 launch_ssh_daemon.sh입니다.

#!/bin/bash
### BEGIN INIT INFO
# Provides:
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description:
# Description
### END INIT INFO

/usr/bin/sudo /usr/bin/ssh -i /etc/ssh/id_rsa -N -f -R 10000:localhost:22 [email protected]

또한 필요하다고 생각되는 명령을 실행했습니다.

sudo chown root:root launch_ssh_daemon.sh
sudo update-rc.d launch_ssh_daemon.sh defaults

또한 컴퓨터를 여러 번 다시 시작했습니다.

나는 무엇을 해야할지 모르겠습니다. 내가 말했듯이 다음과 같이 실행하면 작동합니다.

./launch_ssh_daemon.sh

하지만 비밀번호를 묻는 메시지가 표시되지만 시작할 때 비밀번호를 묻지 않아야 하며 이미 루트로 설정되어 있습니다.

내가 잘못 가고있는 아이디어가 있습니까?

답변1

여러분의 구현이 ./launch_ssh_daemon.sh여러분이 원하는 것을 성취할 수 있기 때문에... 나는 다음과 같이 가정합니다:

  • 스크립트는 다음 위치에 있습니다./etc/init.d/
  • 스크립트에 실행 권한이 있습니다

내 제안은 문제를 식별하고 스크립트를 더 명확하게 만드는 것입니다.

첫째, sudo인수가 없으면 이미 해당 환경에 init.d있습니다 (삭제 ).rootsudo

나는 .sh엔딩이 있는 오프닝 대본을 본 적이 없다. 이것이 문제의 원인인지 확실하지 않습니다. (스크립트 이름을 바꾸십시오)

를 실행했지만 , 첫 번째가 런레벨이고 두 번째가 스크립트가 실행된 순서를 나타내는 숫자(01 - 99) update-rc.d인 형식으로 스크립트에 대한 심볼릭 링크가 있는지 확인하십시오 . 이러한 링크는 해당 실행 수준에 필요한 모든 초기화 스크립트를 실행하기 위해 실행 수준을 선택한 후에 얻어집니다 . 스크립트가 어디에도 연결되어 있지 않으면 시작 시 실행되지 않습니다./etc/rc?.d/S??<script_name>???/etc/init.d/rc

...실행할 때 무슨 일이 일어났는지 확인하기 위해 어딘가에 출력을 기록하는 것이 더 좋습니다.

답변2

Google 검색에서 이 문제가 밝혀졌습니다. WIFI가 꽤 빠르긴 하지만 실제로 WIFI를 사용해 왔습니다. 그러나 저는 USB Wi-Fi 어댑터를 사용하고 있는데 최근 재부팅 후에 불행하게도 그래픽 데스크탑 인터페이스가 로드된 후 약 4초가 지나야 해당 드라이버가 로드된다는 것을 깨달았습니다. 문제를 해결하기 위해 sleep 10지금 추가했습니다. 이 드라이버가 로드되면 변경해 보겠습니다.

관련 정보