Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Paramiko-Run命令_Python_Ssh_Paramiko - Fatal编程技术网

Python Paramiko-Run命令

Python Paramiko-Run命令,python,ssh,paramiko,Python,Ssh,Paramiko,我正在尝试运行此脚本: 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, pass

我正在尝试运行此脚本:

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
问题是:
如何将变量
y
m
d
放入变量
命令中?

Python有很多方法来执行字符串格式化。最简单的方法之一是将字符串的各个部分连接在一起:

#!/usr/bin/env python
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()
使用,可以按名称访问参数:

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

我不认为这有什么明显的改善。现在如果你说了“/”.join([y,m,d]),你就有了一个案例。这里的问题不是语法,问题是如果你运行
a1+a2+a3+…+一个
,您正在创建和销毁
n-1
临时字符串join
仅创建一个字符串。这是一个不好的习惯。n在这里非常小,2。这里的+运算符可读性很强,3。我现在明白了。谢谢大家@马特:我想我们必须同意在这里不同意。这是一个惯例,养成正确操作的习惯是最好的,依我看。你需要在字符串前面加一个f。@kagronick,但是上面的
.format(…)
字符串是完全有效的。哦,我没有在手机上向右滚动。格式在2006年是新的,所以我假设f字符串就是你们所说的。
'ls /home/user/images/cappi/03000/{year}/{month}/{day}'.format(year=y, month=m, day=d)