I have a code
# --- sshutils.py
import paramiko
import base64
import os
from paramiko import AutoAddPolicy
import wx
EMPTY_STRING = ''
def main():
""" main function that connects to the remote host and perform some
actions there
"""
uname = 'yourlogin' # showTextDialog('Enter user name: ')
hname = 'hostname.address.org' # showTextDialog('Enter hostname')
passwd= showPasswordDialog()
sshClient = getConnection(hname, uname, passwd)
# executing remote commands
(stdin, stdout, stderr) = execCommand(sshClient, 'pwd')
printStream(stdout)
(stdin, stdout, stderr) = execCommand(sshClient, 'ls')
printStream(stdout)
# open the ftp shell
sftpClient = sshClient.open_sftp()
L_PATH= '/tmp/'
F_NAME = 'phello.txt'
R_PATH= '/home/magg/tmp/'
L_F = L_PATH + F_NAME
R_F = R_PATH + F_NAME
print L_F, R_F
# create file
createFile(L_F)
print 'Zawartosc pliku: ' + open(L_F, 'r').read()
# send file from local to remote
sftpClient.put(L_F, R_F)
# get info about the remote file
rf_attr = sftpClient.stat(R_F)
print rf_attr
if rf_attr.st_mode != 0755:
print 'File is not executable'
print 'Changing attributes to exec'
sftpClient.chmod(R_F, 0755)
print sftpClient.stat(R_F)
# send file from remote to local
sftpClient.open(R_F, 'w').write('Zmieniamy plik')
sftpClient.get(R_F, L_F)
print 'Localna zawartosc pliku: ' + open(L_F, 'r').read()
# remove files from remote and local sides
sftpClient.remove(R_F)
os.remove(L_F)
# close the ssh sessions
sftpClient.close()
sshClient.close()
raw_input('Press Enter to exit')
return True
def showPasswordDialog():
app = wx.PySimpleApp()
dlgPasswd = wx.PasswordEntryDialog(None, 'Your password ', 'Enter password')
passwd = EMPTY_STRING
if dlgPasswd.ShowModal() == wx.ID_OK:
passwd = dlgPasswd.GetValue()
dlgPasswd.Destroy()
return passwd
def showTextDialog(text):
app = wx.PySimpleApp()
value = EMPTY_STRING
dlg = wx.TextEntryDialog(None, text, 'enter sth')
if dlg.ShowModal() == wx.ID_OK:
value = dlg.GetValue()
dlg.Destroy()
return value
def getConnection(hname, uname, passwd):
""" connects to the remote system
@param hname - hostname
@param uname - user name
@param password - the password
@return the ssh client
"""
client = paramiko.SSHClient();
# if below policy will be not set by default you will be kick out
# with the exception that the host is unknown
client.set_missing_host_key_policy(AutoAddPolicy())
# connect to the host
client.connect(hname, username = uname, password = passwd)
return client
def execCommand(sshClient, cmd):
""" @return (stdin, stdout, stderr)
"""
return sshClient.exec_command(cmd)
def printStream(stream):
""" prints a stream
@param a stream to be printed out """
for line in stream:
print '... ' + line.strip('\n')
def createFile(fileName):
f = open(fileName, 'w')
f.write('Hello\n')
f.write('Python world\n')
f.close()
return f
main()
# --- end sshutils.py
When I run this file from the command line not from the same directory where this file is located it works and the program executes properly. So the module is in:
c:\tmp\ssh-proj\sshutils.py
then I type
c:\tmp\ssh-proj\> python sshutils.py
This is ok. But when I move the file to
c:\Documents and settings\magg\proj\eclipse\py-wksp\unibus\src\unibus\mediators\stdMediators
Then it doesn't work and just hangs on.
In this file I use paramiko and I suspect that there are problems with loading paramiko since it hangs on paramiko getConnection().
Monday, June 23, 2008
Subscribe to:
Posts (Atom)