![연결이 설정될 때마다(루트가 아닌 사용자로) 원격 호스트에 IP를 저장합니다.](https://linux55.com/image/115853/%EC%97%B0%EA%B2%B0%EC%9D%B4%20%EC%84%A4%EC%A0%95%EB%90%A0%20%EB%95%8C%EB%A7%88%EB%8B%A4(%EB%A3%A8%ED%8A%B8%EA%B0%80%20%EC%95%84%EB%8B%8C%20%EC%82%AC%EC%9A%A9%EC%9E%90%EB%A1%9C)%20%EC%9B%90%EA%B2%A9%20%ED%98%B8%EC%8A%A4%ED%8A%B8%EC%97%90%20IP%EB%A5%BC%20%EC%A0%80%EC%9E%A5%ED%95%A9%EB%8B%88%EB%8B%A4..png)
직장에는 (임시적으로) 동적 로컬 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에 키를 추가하지 않았습니다. 다음에 네트워크가 다운되고 다시 내보내기가 발생하면 이 방법이 효과적입니다.
루트 사용자에게는 어려울 것 같은 작업을 루트가 아닌 사용자에게는 쉽게 수행할 수 있는 방법이 다소 혼란스럽습니다.