Python Paramiko – Run command

Question:

I’m try to run this script:

hostname = '192.168.3.4'
port = 22
username = 'username'
password = 'mypassword'
y = "2012"
m = "02"
d = "27"

if __name__ == "__main__":
   s = paramiko.SSHClient()
   s.load_system_host_keys()
   s.connect(hostname, port, username, password)
   command = 'ls /home/user/images/cappi/03000/y/m/d'
   s.close

The question is:
how can I put the variables y,m,d into the variable command ?

Asked By: marcelorodrigues

||

Answers:

Python has lots of ways to perform string formatting. One of the simplest is to simply concatenate the parts of your string together:

#!/usr/bin/env python
import paramiko

hostname = "192.168.3.4"
port = 22
username = "username"
password = "mypassword"
y = "2012"
m = "02"
d = "27"

def do_it():
    s = paramiko.SSHClient()
    s.load_system_host_keys()
    s.connect(hostname, port, username, password)
    command = "ls /home/user/images/cappi/03000/" + y + "/" + m + "/" + d
    stdin, stdout, stderr = s.exec_command(command)
    for line in stdout.readlines():
        print line
    s.close()

if __name__ == "__main__":
    do_it()
Answered By: mattbornski
command = 'ls /home/user/images/cappi/03000/%s/%s/%s' %(y,m,d)
Answered By: V123456

Using the new format specifications, you can access arguments by name:

'ls /home/user/images/cappi/03000/{year}/{month}/{day}'.format(year=y, month=m, day=d)
Answered By: BioGeek

I prefer

command = f"ls /home/user/images/cappi/03000/{y}/{m}/{d}"
Answered By: cucu8
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.