Update
This commit is contained in:
71
script/test/TestRSync.py
Normal file
71
script/test/TestRSync.py
Normal file
@@ -0,0 +1,71 @@
|
||||
import ch.psi.utils.Sys
|
||||
RSYNC_GENERATE_USER_KEY = True
|
||||
XTERM = "LANG=C /opt/X11/bin/xterm" if ch.psi.utils.Sys.getOSFamily().name()=="Mac" else "xterm"
|
||||
|
||||
user = "gobbo_a"
|
||||
aux_file = os.path.expanduser("~/.rsync.tmp")
|
||||
fix_permissions=True
|
||||
do_print=True
|
||||
|
||||
def remove_user_key(do_print=True):
|
||||
cmd = "rm ~/.ssh/ke;"
|
||||
cmd = cmd + "rm ~/.ssh/ke.pub"
|
||||
ret = exec_cmd(cmd, False)
|
||||
if do_print:
|
||||
if not ret.strip():
|
||||
ret = "Success removing ssh keys"
|
||||
print ret
|
||||
|
||||
def reset_user_key(do_print=True):
|
||||
remove_user_key(do_print)
|
||||
cmd = "ssh-keygen -N '' -f ~/.ssh/ke -t rsa;"
|
||||
ret = exec_cmd(cmd)
|
||||
if do_print:
|
||||
print ret
|
||||
|
||||
|
||||
if (os.path.isfile(aux_file)):
|
||||
os.remove(aux_file)
|
||||
with open(aux_file, "w") as fh:
|
||||
fh.write("Cannot access file: " + aux_file)
|
||||
os.chmod(aux_file, 0o777)
|
||||
|
||||
success_msg = 'Success transfering authorization key for: ' + user
|
||||
cmd = 'echo Authorizing: ' + user + ";"
|
||||
cmd = cmd + 'echo Invalid user or password > ' + aux_file + ";"
|
||||
cmd = cmd + "export PK_SUCCESS=FAILURE;"
|
||||
if RSYNC_GENERATE_USER_KEY:
|
||||
reset_user_key(do_print)
|
||||
cmd = cmd + "export PK=`cat ~/.ssh/ke.pub`;"
|
||||
else:
|
||||
cmd = cmd + "export PK=`cat ~/.ssh/id_rsa.pub`;"
|
||||
cmd = cmd + 'echo Invalid user or password > ' + aux_file + ";"
|
||||
|
||||
cmd = cmd + 'su - ' + user + ' bash -c "'
|
||||
cmd = cmd + 'echo $PK >> .ssh/authorized_keys;'
|
||||
#cmd = cmd + 'sort .ssh/authorized_keys | uniq > .ssh/authorized_keys.uniq;'
|
||||
#cmd = cmd + 'mv .ssh/authorized_keys.uniq .ssh/authorized_keys;'
|
||||
if fix_permissions:
|
||||
cmd = cmd + 'chmod g-w ~' + ";"
|
||||
cmd = cmd + 'echo ' + success_msg + ";"
|
||||
cmd = cmd + 'echo ' + success_msg + " > " + aux_file + ";"
|
||||
cmd = cmd + '"'
|
||||
#xterm_options = '-hold -T "Authentication" -into 44040199' #Get Winfow ID with 'wmctrl -lp'
|
||||
xterm_options = '-T "Authentication" -fa monaco -fs 14 -bg black -fg green -geometry 80x15+400+100'
|
||||
try:
|
||||
cmd = "su - gobbo_a;ls"
|
||||
ret = exec_cmd(XTERM + " " + xterm_options + " -e '" + cmd + "'")
|
||||
with open (aux_file, "r") as myfile:
|
||||
ret=myfile.read()
|
||||
#;if [ "$depth" -eq "1" ]; then echo ' + success_msg + '; fi')
|
||||
if not success_msg in ret:
|
||||
raise Exception (ret)
|
||||
except:
|
||||
if RSYNC_GENERATE_USER_KEY:
|
||||
remove_user_key(do_print)
|
||||
raise Exception ("Error authenticating user: " + str(sys.exc_info()[1]))
|
||||
finally:
|
||||
if (os.path.isfile(aux_file)):
|
||||
os.remove(aux_file)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user