Python 스크립트를 서비스로 실행할 계획입니다.
[Unit]
Description=Description
Wants=network-online.target
After=multi-user.target network.target network-online.target
[Service]
Type=simple
Restart=always
ExecStart=/path/to/python /path/to/script.py
[Install]
WantedBy=multi-user.target
스크립트가 원격 컴퓨터에 연결됩니다. /path/to/python /path/to/script.py
쉘에서 스크립트를 실행 하면 정상적으로 작동합니다. 오류가 없습니다. 하지만 서비스가 실행 중일 때 예상한 결과가 표시되지 않습니다.
상태를 확인할 때 다음과 같은 중복 항목이 표시됩니다.
Jul 2 00:00:41 user systemd[1]: Description
Jul 2 00:00:42 user python[12121212]: Pseudo-terminal will not be allocated because stdin is not a terminal.
Jul 2 00:00:42 user python[12121212]: Host key verification failed.
답변1
SSH 연결은 일반적으로 "처음 사용 시 신뢰" 개념을 기반으로 합니다. 따라서 처음 연결할 때 원격 호스트의 지문(키)을 신뢰할지 묻는 메시지가 대화형으로 표시됩니다.
이는 분명히 비대화형 서비스에는 적용되지 않습니다. sudo
사용자(루트, 서비스 파일에서?)로 서비스를 실행하고 원격 서버에 연결해 보세요 . 키를 신뢰하면 키가 저장 ~/.ssh/known_hosts
되고 서비스가 실행됩니다.
(귀하의 서비스에서 이를 사용하는 경우 이 파일을 로드하기 위한 paramiko
호출이 필요합니다 load_system_host_keys()
.)