2012-04-18 8 views
0

그래서 3 개의 서버, s1, s2 및 d1이 있으며 여기서 d1은 samba 서버입니다. 내가 가진 프로세스는 s1에서 실행되는 스크립트가 파일을 생성하고 d1에 복사 한 다음 s2가 d1에서 해당 파일을 가져 와서 일부 프로세스를 실행한다는 것입니다.Bash 스크립트 : 공유 파일이 다른 서버에서 열려 있는지 확인하십시오.

제 문제는 s2에서 s1이 파일을 가져 오기 전에 d1에 파일을 완전히 쓰는 것을 확인해야한다는 것입니다. 이것들은 대용량 파일이기 때문에 s2가 가지고있는 crontab 설정에 따라 s2가 파일을 복사 할 준비가되었을 때 s1이 여전히 파일을 복사하려고 시도 할 때 겹칠 수 있습니다.

첫 번째 경향은 lsof를 사용하는 것이었지만 다른 서버가 파일을 사용하고있는 경우가 아니라 명령을 실행하는 서버에서 사용중인 파일 만 알려줍니다. 이 파일 검사를 스크립팅하는 방법에 대한 아이디어가 있습니까?

+0

어떤 약에 대한 SSH 및 GREP를 통해 lsof의를 실행할 수'flock'? 잠금은 NFS를 통해 작동하지만 솔직히 삼바에 대해서는 전혀 모른다. – FatalError

+0

@FatalError 그래서 s1이 파일을 복사 할 때 s2가 액세스 할 수 없도록 파일을 잠그기 위해 flock을 사용한다고 말하면서? 나는 samba 관련 명령을 d1에서 실행해야하므로 어쨌든 사용할 수 있다고는 생각하지 않습니다. –

답변

0

로컬 시스템과 원격 시스템 및 사용자의 authorized_keys 파일에 사용자의 공개 키를 가지고 있다면, 당신은 파일 이름

ssh [email protected] lsof | grep filename 
if [ $? -eq 0 ] 
    then 
     docommand 
    else 
     dontdoit 
fi 
+0

그것은 가능한 해결책이지만, 일반적으로 보안의 관점에서 그 유형의 액세스를 결코 신뢰하지 못한 것 중 하나입니다. 언제든지 시스템에 안전하지 않은 것으로 느껴지는 자격 증명을 제공해야하는 상황에서 ssh를 사용할 수 있습니다. 하지만 그걸 좀 더 자세히 들여다 볼 수 있습니다. –

+0

특정 공개 키가있는 특정 컴퓨터에서 특정 계정에 액세스 할 수 있고 해당 키가 대상 컴퓨터에 등록되어있는 경우에만 작동합니다. 따라서 근본적으로 보안은 그 계정을 보호하는 것입니다. 그런 관점에서 볼 때 sudo만큼 안전하지만 root 계정을 제공하지는 않습니다. 호스트를 허용하도록 파일을 편집하면 해당 컴퓨터 (사용자가 원할 경우) 만 연결할 수 있습니다. – TaoJoannes