2013-06-04 1 views
0

안녕하세요, 내 이름은 에반, 초보자 유닉스입니다 :)스크립트. 오류 로그를 가져 와서 자동으로 이름을 바꿉니다.

유닉스에서 스크립팅에 대해 물어보고 싶습니다.

내가 (FreeBSD의 OS로) 4 유닉스 서버가 그들을 부르 자,이 "원숭이의" 내가 만약 부르 자 (유닉스 FreeBSD의 OS와도) "Gorrila의" 그리고 하나의 게이트웨이 서버 : 여기 경우입니다 액세스 및 고릴라 서버에 로그인을 원한다면, 나는 원숭이에 액세스하려면 퍼티를 사용하고, 원숭이에서 고릴라 서버에 들어가기 위해 SSH 연결을해야합니다.

내 상사가 gorrila의 서버 중 네 번째로 아파치 오류 로그를 얻으려고합니다.

이번에는 수동으로하고 있습니다. 원숭이에게 퍼티 - 고릴라에게 ssh - scp 명령을 사용하여 원숭이 서버에 오류 로그를 복사 한 다음 원숭이 서버에서 winscp로 오류 로그를 가져옵니다.

문제 : 이 경우 스크립트를 만드는 방법은 무엇입니까? 모든 서버의 오류 로그 이름이 같은 이름이기 때문에 error_log가 자동으로 이름을 바꾸는 방법. "01_error.log"입니다. 나는 그것을 서로 바꿀 수 없도록 수동으로 이름을 바꾸어야했다.

누군가가 이걸 도와 줄 수 있기를 바랍니다. 모두, 도와 주셔서 감사합니다. 그리고 나쁜 영어에 대해 유감스럽게 생각합니다. :)

답변

1

이 작업을 수행하는 가장 쉬운 방법은 Gorilla4에서 자동화 된 작업을 설정하는 것입니다.

첫 번째 문제는 Gorilla4와 Monkey간에 암호가없는 SSH 액세스를 설정해야하므로 사람이 실제로 암호를 입력 할 필요가 없기 때문입니다.

'root'사용자와 함께이 작업을 수행 할 수 있지만 강력하게 권장합니다.

대신 두 호스트에 유지 보수 사용자를 생성 :

$ useradd -m maintuser 

그런 다음 새 사용자로 전환 Gorilla4에 SSH 키를 생성 : 메시지가 표시되면

$ ssh-keygen -t rsa -b 2048 

기본값을 적용합니다. 그런 다음 id_rsa.pub 파일을 Monkey의 maintuser ~/.ssh 디렉토리에 복사하십시오.

이제 Gorilla4의 "maintuser"인 경우 비밀번호없이 원숭이에게 SSH를 보낼 수 있습니다.

그런 다음 "copy_log.sh"라는 스크립트를 만들 수 있습니다

#!/bin/bash 
# copy_log.sh 

log_path="/path/to/logdir" 
log_name="01_error.log" 
target_host="monkey" 

echo "copying ${log_name} to ${target_host}..." 
# note: $(hostname) below will add "Gorilla4" to the name of the file 
scp ${log_path}/${log_name} [email protected]${target_host}:/path/to/dest/$(hostname)_${log_name} || { 
    echo "Failed to scp file" 
    exit 2 
} 
echo "completed successfully" 

는 실행하십시오 :

$ chmod +x copy_log.sh 

은 어떤 시간에 당신이하고자에서 실행 Gorilla4에 maintuser의 crontab에 추가 명상으로 매일 오전 8시에 말씀하십시오.

00 08 * * * /path/to/copy_log.sh >> /some/log/dir/copy_log.out 2>&1 

희망이 있습니다. 그밖에 아무것도, 당신에게 Google에 많음을 줄 것이다 :

+0

감사합니다 KingBob, 대단히 감사합니다.적어도, 당신의 대답은 저에게 시스템 자체의 영감을줍니다. – user2450160

관련 문제