rsync, ssh, perl CGI 문제
글쓴이: googling / 작성시간: 수, 2005/09/07 - 12:13오전
안녕하세요.
웹호스팅 받는 서버쪽에서 제가 테스트하고 있는 서버로 rsync 를 이용해서 백업을 하려고 합니다.
쉘 상태에서 명령어로 직접 입력해서 테스트 서버쪽으로 백업을 하면 아무런 문제가 없습니다만, 매일 새벽 정해진 시간대에 실행을 하고 싶은데, 아쉽게도 호스팅 서버에서는 crontab 을 이용하지 못하네요.
그래서 생각해낸것이 호스팅 서버쪽에 perl CGI를 하나 만들어놓고, 테스트 서버쪽의 crontab 에
10 03 * * * wget http://domain.com/cgi-bin/rsync.cgi?todo=rsync
이런식으로 넣어주면 해결이 될것 같습니다.
그래서 perl 로 CGI를 하나 짰는데..
대충 다음과 같습니다.
#!/usr/bin/perl use strict; use CGI; my $query = CGI->new; my $todo = $query->param('todo'); my $remote_address = $ENV{'REMOTE_ADDR'}; print "Content-type: text/html\n\n"; exit if($remote_address ne "remoteIP"); if($todo eq 'rsync') { my $rsync = "/usr/bin/rsync -avzgo -e ssh /home/local_account/www/ remote_account\@remotehost:/home/remote_account/www/"; my $result = system(`$rsync`); print "$rsync\n"; print $result; } exit;
앞서 언급했지만, 쉘상태에서 rsync 명령어로 직접 실행하면 아무런 문제가 없습니다.(authorized_keys 등은 제대로 되어 있습니다.)
위 CGI를 실행했을때 정상적으로 rsync 가 실행되었을때는 '-1' 값이 나오더군요. 하지만, 위 코드에서는 '65280' 이 나오고 정상적으로 rsync 가 실행되지 않습니다.
뭐가 문제인지 모르겠습니다. 도움을 부탁드립니다.
Forums:
흠냐..
해당 호스팅 서버의 apache(무엇이든)의 실행권한이 글 올리신 분의 퍼미션을 능히 넘나들 수 있습니까? 혹은 suexec 를 지원하고 이미 그것을 적용해보신 상태이신지요? 우선 그것이 궁금하구요.
호스팅 서버에 ssh 로 접속할 수 있다면(만약) 구태여 cgi 를 사용할 필요는 없지 않을까요?
저도 글을 올려놓고 보니 웹유저와 호스팅서버 계정이 다르기 때문이 아닐까
저도 글을 올려놓고 보니 웹유저와 호스팅서버 계정이 다르기 때문이 아닐까 하는 생각이 드는군요.
웹유저를 알수 있는 방법은 어떤게 있을까요?
예, 호스팅 서버에 ssh 로 접속할수 있고, 쉘상태에서 직접 수행하면 아무런 문제가 없습니다. 앞의 글에서도 언급했지만, crontab 을 사용할수 없기때문에 새벽시간에 자동으로 백업을 할수가 없어 cgi 를 이용하는 방법을 생각해 낸것입니다.
[quote="googling"]저도 글을 올려놓고 보니 웹유저와 호스팅
아뇨 제말은..
호스팅 서버에 ssh로 접근 가능하다면, 테스트 컴퓨터의 크론잡에 ssh를 이용한 스크립트를 사용하여 호스팅서버에 바로 명령을 내리는 게 편하다고 생각한 것입니다. 왜 굳이 cgi를 이용해서 돌아가려 하시는가 하는 질문입니다.
[quote="무단포옹"][quote="googling"]저도 글을 올려
그렇군요. 미처 그 생각을 하지 못했네요. ^^;
ssh 로 관련정보를 찾아봐야 겠습니다. 감사합니다.
댓글 달기