원격 컴퓨터에서 메모리, CPU 사용량 등을 찾을 수 있는 bash 스크립트를 발견했습니다. 이를 위해 다음 기술을 사용합니다.
i=RemoteServerName
TOTALMEM=`on $i cat /proc/meminfo | grep MemTotal | awk -F ' ' '{print $2}' `
인터넷에서 검색해 보니 모두가 이를 달성하기 위해 ssh username@RemoteServerName을 사용하는 것 같습니다. 나는 이 "on"이 어떻게 작동하는지 이해하지 못합니다. 스크립트는 잘 작동하지만 스크립트 외부에서 명령을 실행하면 다음과 같이 표시됩니다. -bash: on: command not find..
매뉴얼 페이지를 검색했지만 아무것도 찾지 못했습니다. 또한 "type on" 명령을 사용하여 "on"으로 표시되는 별칭을 검색했습니다. 그러나 아무것도 발견되지 않았습니다. 이 "on"이 원격 시스템에서 명령을 실행하는 방법을 이해하도록 도와주세요. "on"이라는 명령은 없는 것 같아요. 도와주세요.
로컬 및 원격 시스템 모두 Redhat 6.2입니다.
답변1
찾았어요. 처음에 내가 한 일은 내 (루트) 환경의 모든 곳에서 "on"이라는 별칭을 검색하는 것이었습니다. 그런데 이 스크립트가 서버에서 어떻게 사용되는지 확인했습니다. 이는 다른 많은 원격 서버에 대한 시간별 리소스 활용도를 생성하는 데 사용됩니다. 따라서 crontab의 일부여야 합니다. 네, 해냈습니다! 이 스크립트는 루트가 아닌 다른 사용자를 위한 사용자별 crontab의 일부입니다.
스크립트에는 여러 줄이 있습니다.
PATH=$PATH:$HOME/bin
export PATH
이 사용자 의 ~/bin에는 on $i
.ssh servername
직접 사용하는 대신 이 추가 단계를 수행해야 하는 이유가 궁금하다면 ssh servername
다음 설명을 참조하세요. 위에 표시된 코드 형식은 단지 형식일 뿐이며, 실제 스크립트에서는 다음과 같이 여러 서버(그룹으로 구분됨)에 대한 보고서를 생성하는 데 사용됩니다.
for i in $GROUP1 $GROUP2 $GROUP3
do
TOTALMEM=`on $i cat /proc/meminfo | grep MemTotal | awk -F ' ' '{print $2}' `
#other report generation and formatting code here
done
GROUP1, GROUP2 등은 유사한 서버의 호스트 이름을 포함하는 목록입니다.
ssh username@servername
그룹에 속한 서버에는 로그인을 위한 공통 자격 증명이 있습니다. "on" 파일에는 Case 문을 사용하여 그룹을 기반으로 명령을 구성하는 데 필요한 모든 코드가 포함되어 있습니다.