내 비즈니스 목적은 Linux에서 원격 파일 시스템을 모니터링하고 새 파일이 있으면 SFTP를 다른 시스템으로 전송하고 삭제하는 것입니다.
그러나 제한 사항은 원격 컴퓨터에 라이브러리를 설치할 수 없다는 것입니다. 따라서 원격 시스템의 간격 SSH 명령 폴링을 구현하려고 생각 중입니다.
내 질문:
간격 폴링을 구현할 수 있나요? 아니면 더 좋은 생각이 있나요?
원격 컴퓨터를 모니터링하려면 어떤 SSH 명령을 사용해야 합니까?
답변1
간단하고 게으른 방법:
crontab
로컬 시스템의 일반 사용자의 경우(15분마다):
*/15 * * * * /bin/bash /path/to/script.sh
암호:
#!/bin/bash
source ~/.bashrc
ssh-add /home/me/.ssh/id_rsa
ssh user@remote-server printf '%s\n' '/path/to/new_files/*' > ~/.$$_remote-files
if ! cmp ~/.$$_remote-files ~/.remote-files &>/dev/null; then
echo 'new file(s) or dir(s) detected !'
# ssh user@remote-server rm -rf '/path/to/new_files/*'
mv ~/.$$_remote-files ~/.remote-files
fi
자동 SSH 로그인을 구현하려면 비밀번호 없이 SSH 암호 문구를 생성해야 합니다.
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/me/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/me/.ssh/id_rsa
Your public key has been saved in /home/me/.ssh/id_rsa.pub
The key fingerprint is:
123456789ABCDEF
답변2
답변3
더 나은 접근 방식은 파일 서버에 스캐너(inotify 기반)를 설치하는 것입니다. 새 파일이 나타나면 즉시 스캐너는 관심 있는 사람에게 일종의 메시지(UDP 브로드캐스트, 이메일 등)를 보냅니다. 이를 위해서는 약간의 프로그래밍이 필요하며 이러한 응용 프로그램은 파일 서버에 설치되어 실행되어야 합니다.
이를 수행할 수 없는 경우 투표만이 유일한 선택입니다.ssh
명령 이 아니라sftp
명령입니다. 명령은 입니다ls
. 또한 약간의 프로그래밍이 필요하지만 셸에서 완전히 수행할 수 있습니다.