猿问

AttributeError:“元组”对象没有属性“格式”

我正在尝试在代码中插入一个变量以在远程 Linux 主机上运行命令,为此我使用 .format 方法,请参阅下面的代码:


import paramiko

from datetime import datetime, timedelta


hostnames = [

   'hostname',

]

username = 'username'

password = 'password'

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.load_system_host_keys()

ydate = datetime.strftime(datetime.now() - timedelta(1), '%Y%m%d')


for host in hostnames:

   ssh.connect(host, username=username, password=password, look_for_keys=False)

   ssh.exec_command('cp test.txt {}.mrs_stats0.{}.pytest.gz ; chmod +r {}.mrs_stats0.{}s.gz').format(host, ydate, host, ydate)

我在尝试使用 {} 和 .format 时失败,并出现以下错误:


Traceback (most recent call last):

  File "C:/Users/IdeaProjects/main.py", line 25, in <module>

    ssh.exec_command('cp test.txt {}.mrs_stats0.{}.pytest.gz ; chmod +r {}.mrs_stats0.{}s.gz').format(host, test, host, test)

AttributeError: 'tuple' object has no attribute 'format'

我无法理解为什么我收到此错误,此外我已经做了一些阅读以进一步理解元组,并且我无法理解为什么我的变量没有被读取为字符串


汪汪一只猫
浏览 115回答 1
1回答

一只斗牛犬

我想你希望最后一行是ssh.exec_command('cp test.txt {}.mrs_stats0.{}.pytest.gz ; chmod +r {}.mrs_stats0.{}s.gz'.format(host, ydate, host, ydate))只是一个错位的支架。在您当前的代码中ssh是paramiko.SSHClient()实例,其方法exec_command()method 返回执行命令的 stdin、stdout 和 stderr,作为 3 元组
随时随地看视频慕课网APP

相关分类

Python
我要回答