직장에는 (임시적으로) 동적 로컬 LAN IP가 있지만 집에서 연결하려면 호스트 A(정적 IP)로 SSH를 통해 연결하고 거기에서 내 컴퓨터에 연결합니다.
그러나 IP가 변경되므로 연결이 설정될 때마다 호스트 A에 자주 저장하고 싶습니다(케이블 불량으로 인해 이더넷 연결이 끊어지는 경우가 많습니다).
/etc/NetworkManager/dispatcher.d/90exportIP
NetowrkManager를 사용하고 있으므로 다음 명령을 실행하는 파일을 만들었습니다 .
ssh hostA "echo $(date) enp4s0f2 IP: $(/sbin/ifconfig enp4s0f2 2>/dev/null|awk '/inet addr:/ {print $2}'|sed 's/addr://') >> todaysElanIP";
그러면 내 IP를 가져와 todaysElanIP
호스트 A의 파일 에 저장합니다.
문제는 이 스크립트가 루트로 실행되는데 내 키가 거기에 없다는 것입니다. 때로는 bash에서 이 명령을 실행하면 작동합니다. 하지만 네트워크가 시작될 때마다 자동으로 실행되기를 원합니다.
시도했지만 runuser -l myUser
이 방법으로는 ssh-agent에 액세스할 수 없습니다.
매번 작동할 필요는 없습니다. 예를 들어 시작 시 ssh-agent에 키를 추가하지 않았습니다. 다음에 네트워크가 다운되고 다시 내보내기가 발생하면 이 방법이 효과적입니다.
루트 사용자에게는 어려울 것 같은 작업을 루트가 아닌 사용자에게는 쉽게 수행할 수 있는 방법이 다소 혼란스럽습니다.