2016-06-08 2 views
4

Net::SFTP으로 시작하려하지만 해당 설명서 또는 Net::SSH::Perl에 대한 설명서에서 로그 아웃하는 방법을 찾을 수 없습니다. SFTP 서버.Net :: SFTP를 사용하여 로그 아웃하는 방법

무엇이 누락 되었습니까?

가비지 컨트롤로 로그 아웃을 처리합니까?

+1

@ 보 로딘, 편집 해 주셔서 감사합니다. – theglauber

+0

대부분의 사람들은 게시물에 부모의 태도를 취하고 나를 만지기까지 저주합니다! – Borodin

답변

4

수 없습니다.

Net::SFTP과 Net :: SSH :: Perl의 소스 코드를 살펴 보았습니다. 어느 쪽도 메소드가 DESTROY이 아니므로 명시적인 정리가 수행되지 않습니다. disconnect 또는 quit 또는 이와 유사한 것도 없습니다.

Net :: SSH :: Perl은 sub _disconnect which is empty입니다. called by sub fatal_disconnect입니다. fatal_disconnect is used에 의해 SFTP 요청이 실패한 경우 Net :: SFTP. 하지만 그게 전부입니다. 다른 건 없어.

범위에서 벗어나면 개체가 Perl에 의해 정리됩니다.

{ 
    my $sftp = Net::SFTP->connect; # example 
    # do stuff... 
} 

# here it has been cleaned up and DESTROY was called on it 

하지만 코드가 없으므로 아무 것도 발생하지 않습니다. SSH에서 로그 아웃하라는 코드를 찾을 수 없습니다. 어쩌면 그냥 시간을 초과 할 수 있습니다. 우리는 서버 로그를보고 무슨 일이 일어나는지 알아봐야 할 것입니다.

+0

네, 여기와 같습니다. 찾아 주셔서 고맙다, 나는이 기초가 간과 될 것 인 무엇인가 믿을 수 없었다. 따라서 프로그램의 수명에 따라 서버에서 연결 시간을 초과하거나 프로그램이 종료되고 Unix가 자원을 해제 할 때 연결이 닫힐 수 있습니다. 서버가 연결을 시간 초과하면 일부 리소스가 여전히 클라이언트 쪽 (소켓의 클라이언트 쪽)에 보관된다고 생각합니다. 따라서 오래 동안 살았던 프로그램은 제대로 연결되지 않았기 때문에 많은 연결을 할 수 있고 결국 시스템을 굶어 죽을 수 있습니다. – theglauber

+0

합리적이라고 들리지만, SSH에 관해서는 아무 말도하지 못합니다. – simbabque

관련 문제