【发布时间】:2019-08-06 00:19:33
【问题描述】:
我正在制作一个 jinja2 模板来管理某些网络设备上的 SSH 密钥。
我有一个名为user_info 的字典,基本上是{"username":"ssh_key"}
为了使配置正常工作,我需要将 SSH 密钥括在“”中 这在 jinja2 中很容易做到,就像这样:
system {
login {
{% for key, value in user_info.items() %}
user {{ key }} {
class super-user;
authentication {
ssh-rsa "{{ value }}"
}
}
{% endfor %}
}
}
注意{{ value }} 周围的“”
我遇到的问题是 dict 在 ssh-key 的末尾有一个换行符,例如:
'bob': 'ssh-rsa this-is-my-ssk-key\n'
所以我需要将ssh-rsa this-is-my-ssk-key 包装在“”中,但在新行之前。
我需要将 \n 保留在那里,因为有些人有多个 ssh 密钥,而 \n 是它将它们分开的方式。例如
'bob': 'ssh-rsa this-is-my-ssk-key\n ssh-rsa another-ssh-key\n ssh-rsa yes-this-is-one-more-ssh-key'
所以我需要在新行之前用“”包裹每个 ssh-rsa 部分... 这可能吗?
【问题讨论】:
-
将它们拆分为列表并仅将它们保留为列表。然后您可以将
""添加到每个项目并使用'\n'将它们连接回来,或者您可以在模板中使用for-loop 以使用"{{ value }}"分别显示每个元素 -
你的意思是把 ssh-keys 拆分成一个列表还是整个东西而不使用字典?我将在哪里进行拆分?在 jinja2 或我的 python 代码中?
-
你想要第一个 ssh 密钥吗?
-
不,我需要所有这些
-
仅将
ssh-rsa拆分为列表并将此列表保存在您的字典中。当你得到它时,在 python 中执行它。