gnome 의 top bar에 ip address 등 정보 표시하기
리눅스에서 작업을 하다보니 주기적으로 유동 ip가 바뀌는 환경이어서 현재의 ip address를 확인하는 과정이 필요했습니다. 매번 터미널을 열고 명령을 치는 것도 생각보다 고달픈 일이 되어버려서 이것을 화면 어딘가에 표시하고 싶었습니다. 이것처럼 자신이 원하는 정보를 화면 어딘가에 항상 표시하고 싶은 때가 종종 있습니다. 저는 이런 경우 gnome의 top bar에 내가 원하는 특정 문자열을 출력하는 방법을 설명하고자 합니다.
일단 쉘명령을 통해 제가 원하는 ip address 문자열만 얻는 작업을 먼저 진행해 보겠습니다. 저희가 잘 아는 ifconfig를 이용하면 ip address는 쉽게 찾을 수 있습니다. 하지만 불필요한 정보가 많습니다. 우리가 원하는 장치를 찾아보겠습니다. route -n 명령을 이용하면 원하는 Iface 를 얻을 수 있습니다. 이것을 awk 명령을 통해 텍스트를 가져와 보겠습니다.
display_interface=$(route -n | awk '$1 == "0.0.0.0" {print $8; exit}')
위의 명령은 1번째 컬럼이 0.0.0.0인 줄의 8번째 컬럼 텍스트를 가져오라는 뜻입니다. 이것을 display_interface라고 지정해 놓겠습니다. echo $display_interface 명령을 통해 해당값을 확인하실 수 있습니다. 이를 이용해 ifconfig $display_interface 라고 명령을 사용해 보시면 $display_interface 에 해당하는 장치의 정보만 표시됩니다. 그중 inet에 관련한 정보만 가져와 보겠습니다.
display_ip_address=$(ifconfig "$display_interface" | awk '$1 == "inet" {print $2;exit}')
이제 echo $display_ip_address 명령을 통해 확인해 봅니다. 원하는 텍스트가 나오시지 않았다면 위의 과정에서 중간 중간 문자열을 확인하면서 컬럼번호 등의 약간의 수정을 통해 작업하실 수 있을 겁니다. 자 이것을 적절한 위치의 vi등의 편집기를 통해 shell script를 만들어 줍니다. 저는 script 폴더를 만들고 그곳에 스크립트 파일을 만들었습니다.
mkdir ~/script
vi ~/script/display_ip_address
이제 파일에 다음의 내용으로 채웁니다.
display_interface=$(route -n | awk '$1 == "0.0.0.0" {print $8; exit}')
display_ip_address=$(ifconfig "$display_interface" | awk '$1 == "inet" {print $2;exit}')
echo "$display_ip_address"
exit 0
그 후 script에 실행권한을 줍니다.
chmod 777 ~/script/display_ip_address
이제 텍스트를 만들어 줄 shell script는 만들어 졌습니다. 이제 이 텍스트를 화면에 표시해 줄 차례입니다. 먼저 sysmonitor indicator를 설치해야 합니다. 이것은 내가 원하는 정보를 Systray / Application 알림영역에 표시할 수 있게 해줍니다. 해당 repository 를 추가해준 다음 apt update를 통해 list를 갱신한 후 설치해 주시면 됩니다.
sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor
sudo apt update
sudo apt install indicator-sysmonitor
설치 후 보면 다음과 같이 System Monitor Indicator라는 것이 설치되어 있을 겁니다.
이것을 실행시키면 상단바 오른쪽에 다음과 같이 CPU 와 메모리 상태가 표시됩니다. 아래와 같이 마우스 오른쪽을 눌러 Prefernces를 선택합니다.
필요에 따라 General의 Run on startup를 체크하셔서 매번 시작시 자동 실행시켜 놓습니다.
그 다음 Adavanced 탭으로 이동합니다. 여기서 화면상에 표시될 텍스트 내용을 편집할 수 있습니다. 허나 우리가 원하는 ip address를 표시하는 것에 대한 정의는 보이지 않습니다.
새로 만들기를 통해 Sensor를 하나 추가합니다.
command는 아까 만들었던 ~/script/display_ip_address 라고 넣어줍니다. 그후 Customize output에 다음과 같이 ipaddress를 표시하게 수정후 저장을 누릅니다.
그 후 System Monitor Indicator를 보면 다음과 같이 ip address가 표시되는 것을 보실 수 있습니다.
이것을 응용하면 이것저것 화면에 원하는 정보를 표시할 있으실 겁니다.
긴 글 읽으시느라 수고하셨습니다.