Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Python Paramiko between Linux and Windows Server -- no output obtained from Windows for "dir" or "cd" commands

1,047 views
Skip to first unread message

Pythonista

unread,
May 31, 2015, 3:02:53 AM5/31/15
to
Hello There:

I am using Python 2.7.6 and Paramiko module (on a Linux server) to connect to a Windows server and send some commands and get output. I have a connect function which takes IP, username and password of the remote Windows server and I get an sshobj when that happens. How do I use it to send remote calls is my question?

If it were a local system, I would just say "os.system" but not sure about the remote calls. Can someone help?

My code looks like below: sys.path.append("/home/me/code")

import libs.ssh_connect as ssh
ssh_obj = ssh.new_conn(IP, username, password)

stdin, stdout, stderr = ssh_obj.exec_command("dir") #since the remote system I am SSHing into is Windows.

my "new_conn" looks like this:

import paramiko
def new_conn(IP, username, password):
ssh_obj = paramiko.SSHClient()
ssh_conn.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_conn.connect(IP, username, password), timeout=30)
return ssh_obj


if I replaced "dir" with "ipconfig" it works fine. I wonder how I can make "dir" work - or for that matter.. with "cd /path/to/dir"?


I know for paramiko's ssh connection to work, i need cygwin installed on a Windows. Objective is to run commands remotely from a Linux to a Windows server and then process the output again on Linux server or on Windows itself.

I am confused because, "ipconfig" sent from Linux to Windows using "ssh_obj.exec_command("ipconfig")" works but not "ssh_obj.exec_command("dir")" - tried giving the path like "cd C:\Users\Administrator" for cmd or "cd C:" followed by "cd Users/Administrator" like in Cygwin. Neither of them work.

Peter Otten

unread,
May 31, 2015, 8:18:53 AM5/31/15
to pytho...@python.org
Pythonista wrote:

> Hello There:
>
> I am using Python 2.7.6 and Paramiko module (on a Linux server) to connect
> to a Windows server and send some commands and get output. I have a
> connect function which takes IP, username and password of the remote
> Windows server and I get an sshobj when that happens. How do I use it to
> send remote calls is my question?
>
> If it were a local system, I would just say "os.system" but not sure about
> the remote calls. Can someone help?
>
> My code looks like below: sys.path.append("/home/me/code")
>
> import libs.ssh_connect as ssh
> ssh_obj = ssh.new_conn(IP, username, password)
>
> stdin, stdout, stderr = ssh_obj.exec_command("dir") #since the remote
> system I am SSHing into is Windows.
>
> my "new_conn" looks like this:
>
> import paramiko
> def new_conn(IP, username, password):
> ssh_obj = paramiko.SSHClient()
> ssh_conn.set_missing_host_key_policy(paramiko.AutoAddPolicy())
> ssh_conn.connect(IP, username, password), timeout=30)
> return ssh_obj
>
>
> if I replaced "dir" with "ipconfig" it works fine. I wonder how I can make
> "dir" work - or for that matter.. with "cd /path/to/dir"?


dir is an internal command of the windows shell. Try

ssh_obj.exec_command("cmd /c dir")

This will execute the dir command and then close the shell.

cd is also internal, but I don't think it makes sense to invoke it and then
close the shell...

Pythonista

unread,
May 31, 2015, 4:12:45 PM5/31/15
to
Thanks Peter but I got no output from your suggestion either.!
Message has been deleted

Pythonista

unread,
Jun 1, 2015, 12:10:15 AM6/1/15
to
On Sunday, May 31, 2015 at 6:20:19 PM UTC-7, Dennis Lee Bieber wrote:
> On Sun, 31 May 2015 13:12:24 -0700 (PDT), Pythonista
> <kukki.k...@gmail.com> declaimed the following:
>
> >
> >Thanks Peter but I got no output from your suggestion either.!
>
> From Windows viewpoint, I suspect EACH of the commands you send is
> being executed in a totally new process, with no memory of any commands
> sent previously.
>
> As mentioned, "ipconfig" is a separate executable program file, and can
> be run without being tied to a Windows command shell. "dir", "cd", "copy",
> "del", and many similar functions are NOT actual programs but internal
> functions of the Windows command processor.
>
> Given the mixed quoting used in this thread I'm not sure just what was
> tried or not.
> --
> Wulfraed Dennis Lee Bieber AF6VN
> wlf...@ix.netcom.com HTTP://wlfraed.home.netcom.com/

Hi Peter -

So I was trying "ipconfig" and "ls /path/to/dir" back to back. Apparently, I needed a sleep inbetween the two, I believe. But if "ls" was used individually, it works fine.

Thanks!
0 new messages