Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- import paramiko
- import socket
- import sys
- def ihandler(title, instructions, prompt_list):
- results = []
- passwd_type = False
- if len(instructions) > 0:
- print ' ' + instructions
- for prompt in prompt_list:
- if prompt[1] == True:
- print ">" + prompt[0]
- passwd_type = False
- else:
- print ":" + prompt[0]
- passwd_type = True
- result = raw_input()
- results.append(result)
- if passwd_type:
- print '{PAM_AUTHTOK=' + result
- return results
- if __name__=="__main__":
- # Ping pam_external, make sure we're talking.
- print '.'
- ping_result = raw_input()
- if not len(ping_result):
- sys.exit(1)
- print ")Username: "
- username = raw_input()
- # paramiko.common.logging.basicConfig(level=paramiko.common.DEBUG)
- s=socket.socket()
- s.connect(('thorin',22))
- t=paramiko.Transport(s)
- # t.set_log_channel("paramiko.transport")
- t.start_client()
- try:
- t.auth_none(username)
- except paramiko.BadAuthenticationType, err:
- allowed_types = err.allowed_types
- if 'keyboard-interactive' in allowed_types:
- try:
- t.auth_interactive (username, ihandler)
- except paramiko.AuthenticationException, err:
- print '[PAM_AUTH_ERR]'
- sys.exit(0)
- print '[PAM_SUCCESS]'
- sys.exit(0)
- if 'password' in allowed_types:
- # try password authentication
- print ":Password: "
- password = raw_input()
- try:
- t.auth_password(username, password)
- except paramiko.AuthenticationException, err:
- print '[PAM_AUTH_ERR]'
- sys.exit(0)
- print '{PAM_AUTHTOK=' + password
- print '[PAM_SUCCESS]'
- sys.exit(0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement