2010-12-01 2 views
0

SSH로 작업하기위한 라이브러리에 대한 조언. 주요 요구 사항은 sudo 유틸리티를 사용하여 정상적으로 작동하는 것입니다. 이미 시도하고 내가 고통 오전 :SSH와 작업하기위한 라이브러리

  • paramiko - sudo는 전혀, 전화 후 시도하는 STDIN 암호에서 봉사 할 수는 없지만, sudo는 다음 입력 썼다 :
  • "어떤 터미날이 존재하지 않습니다" pxssh - mmmmmm 매우 느리고 매우 느리고 어색함
  • fabric - 다른 사용자와 함께 작업 할 수 있고 암호를 보내야하는 곳에서 이상적인 세계에서만 sudo를 할 수 있습니까?

sudo와 호환되는 정상 라이브러리를 가지고 계십니까? 그렇지 않습니다.

+0

질문을 조금 더 다르게 표현할 수 있습니까? 'sudo'와'ssh'는 두 가지 다른 것들입니다. 너 뭐 찾고있어? –

+0

그냥 SSH를 통해 서버에 연결하고 권한있는 계정에서 작업을 수행하면됩니다. – Denis

답변

0

나는 당신이 fabric을 찾고 있다고 생각합니다.

0

'requiretty'설정이있는 실제 터미널없이 작동하도록 sudo를 구성 할 수 있습니다. sudoers 매뉴얼에서 :

설정하면 sudo는 사용자가 실제 tty에 로그인 한 경우에만 실행됩니다. 이것은 rsh (1)가 tty를 할당하지 않기 때문에 "rsh somehost sudo ls"와 같은 것을 허용하지 않을 것입니다. tty가없는 경우 에코가 꺼질 수 없기 때문에 일부 사이트는이 플래그를 설정하여 사용자가 표시된 암호를 입력하지 못하게 할 수 있습니다. 이 플래그는 기본적으로 해제되어 있습니다.

이것은 나를 위해 paramiko와 함께 작동합니다. 어떤 일을하는지에 따라 pexpect과 같은 것을 볼 수 있습니다.

+0

대신 TTY를 할당하지 않으시겠습니까? 내 대답의 링크를 참조하십시오. –

+0

@Andrew Aylett : 자동화를 위해 공개 키 인증에만 SSH를 사용하고, 스크립트 내에서 일반 텍스트 암호를 피하기 위해 매우 제한적인 sudoers User_Alias와 NOPASSWD를 함께 사용합니다.암호를 입력하지 않는 환경에서 tty 할당을 요구하는 것은 낭비입니다. –

0

나는 처음에 pxssh과 같은 문제가 있었 : 그것은 매우 느렸다!

#!/usr/bin/python 

import pxssh 
import getpass 

try: 
    s = pxssh.pxssh() 
    s.PROMPT = "#" 
    hostname = raw_input('hostname: ') 
    username = raw_input('username: ') 
    password = getpass.getpass('password: ') 
    s.login(hostname, username, password, auto_prompt_reset=False) 
    s.sendline('ls') # run a command 
    s.prompt()    # match the prompt 
    print(s.before)  # print everything before the prompt. 
    s.sendline('ls -l /tmp') # run a command 
    s.prompt()    # match the prompt 
    print(s.before)  # print everything before the prompt. 
    s.logout() 
except pxssh.ExceptionPxssh as e: 
    print("pxssh failed on login.") 
    print(e) 

의 핵심 부분은 s.PROMPT = "#"s.login()auto_prompt_reset=False입니다 :
여기 내가 빨리 실행하게 볼 수있는 방법입니다.
이 방법을 사용하려면 프롬프트 패턴을 알고 있어야합니다 (제 경우에는 "#"이며 PROMPT 특성을 정규식으로 설정할 수 있습니다).

0

또한 pxssh의 로그인 속도에 몇 가지 문제가있었습니다. 위에서 언급 한 코드를 사용해 보았지만 로그인하는 데 10 초 이상 걸렸습니다. original_prompt 인수를 사용하여 문제가 해결되었습니다. 제 경우에는 '>'로 끝나는 컴퓨터로 처음 ssh 할 때 원래의 부분을 볼 수 있도록 original_prompt를 설정해야합니다.

#!/usr/bin/env python 

from pexpect import pxssh 

host = 'hostname.domain' 
user = 'username' 
password = 'password' 

terminal = pxssh.pxssh() 
terminal.login(host, user, original_prompt='[>$]') 
관련 문제