netmiko使用案例9 免密码登陆思科设备

Linux/Unix的SSHkeygen示例
完成以下步骤设置您)连接的Linux/UNIX工作站(或服务器对ESA,不用密码。 在本例中,我们不会指定作为密码短语。

  1. 在您的工作站(或服务器上)使用unix命令SSHkeygen,请生成专用密钥:

$ ssh-keygen -b 2048 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/[USERID]/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/[USERID]/.ssh/id_rsa.
Your public key has been saved in /home/[USERID]/.ssh/id_rsa.pub.
The key fingerprint is:
00:11:22:77:f6:a9:1e:19:f0:ca:28:9c:ff:00:11:22 [USERID]@hostname.com
The key's randomart image is:
+--[ RSA 2048]----+
| +... +|
| o= o+|
| o o ..|
| . ..o . + |
| . ES. o + |
| o + . . |
| o . . |
| o o |
| . . |
+-----------------+
(以上的*the从Ubuntu 14.04.1)生成

2)打开在#1 (id_rsa.pub)创建的公共密钥关键文件并且复制输出:

$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJg9W3DeGf83m+E/PLGzUFPalSoJz5F
t54Wl2wUS36NLxm4IO4Xfrrb5bA97I+ZA4YcB1l/HsFLZcoljAK4uBbmpY5kXg96A6Wf
mIYMnl+nV2vrhrODgbcicEAdMcQN3wWHXiEWacV+6u+FlHlonkSAIDEug6vfnd+bsbcP
Zz2uYnx1llxbVtGftbWVssBK3LkFp9f0GwDiYs7LsXvQbTkixrECXqeSrr+NLzhU5hf6
eb9Kn8xjytf+eFbYAslam/NEfl9i4rjide1ebWN+LnkdcE5eQ0ZsecBidXv0KNf45RJa
KgzF7joke9niLfpf2sgCTiFxg+qZ0rQludntknw [USERID]@hostname.com

  1. 登陆到您的设备并且配置您的ESA认可您的工作站(或服务器)使用您在#1创建的公共SSH密钥,并且确认更改。 在登录期间,注意密码提示:

$ ssh admin@192.168.0.199


CONNECTING to myesa.local
Please stand by...


Password:[PASSWORD]
Last login: Mon Aug 18 14:11:40 2014 from 192.168.0.200
Copyright (c) 2001-2013, Cisco Systems, Inc.

AsyncOS 8.5.6 for Cisco C100V build 074

Welcome to the Cisco C100V Email Security Virtual Appliance

myesa.local> sshconfig

Currently installed keys for admin:

Choose the operation you want to perform:

  • NEW - Add a new key.
  • USER - Switch to a different user to edit.
    []> new

Please enter the public SSH key for authorization.
Press enter on a blank line to finish.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJg9W3DeGf83m+E/PLGzUFPalSoJz5F
t54Wl2wUS36NLxm4IO4Xfrrb5bA97I+ZA4YcB1l/HsFLZcoljAK4uBbmpY5kXg96A6Wf
mIYMnl+nV2vrhrODgbcicEAdMcQN3wWHXiEWacV+6u+FlHlonkSAIDEug6vfnd+bsbcP
Zz2uYnx1llxbVtGftbWVssBK3LkFp9f0GwDiYs7LsXvQbTkixrECXqeSrr+NLzhU5hf6
eb9Kn8xjytf+eFbYAslam/NEfl9i4rjide1ebWN+LnkdcE5eQ0ZsecBidXv0KNf45RJa
KgzF7joke9niLfpf2sgCTiFxg+qZ0rQludntknw [USERID]@hostname.com

Currently installed keys for admin:

  1. ssh-rsa AAAAB3NzaC1yc2EAA...rQludntknw ([USERID]@hostname.com)

Choose the operation you want to perform:

  • NEW - Add a new key.
  • DELETE - Remove a key.
  • PRINT - Display a key.
  • USER - Switch to a different user to edit.
    []>

myesa.local> commit

  1. 退出在设备和重新登录外面。 注意密码提示删除,并且访问直接地授权:

myesa.local> exit

Connection to 192.168.0.199 closed.
robert@ubuntu:~$ ssh admin@192.168.0.199


CONNECTING to myesa.local
Please stand by...


Last login: Mon Aug 18 14:14:50 2014 from 192.168.0.200
Copyright (c) 2001-2013, Cisco Systems, Inc.

AsyncOS 8.5.6 for Cisco C100V build 074

Welcome to the Cisco C100V Email Security Virtual Appliance
myesa.local>

完成上面操作后,我们可以编写脚本自动登陆思科设备了。
脚本如下:

conn_ssh_keys.py

#!/usr/bin/env python
from netmiko import Netmiko
from getpass import getpass

key_file = "/home/gituser/.ssh/test_rsa"

cisco1 = {
    'device_type': 'cisco_ios',
    'host': 'cisco1.twb-tech.com', 
    'username': 'testuser',
    'use_keys': True,
    'key_file': key_file,
}

net_connect = Netmiko(**cisco1)
print(net_connect.find_prompt())
output = net_connect.send_command("show ip arp")
print(output)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以使用Netmiko模块编写一个Python脚本,用于自动重启Cisco网络设备。脚本可以通过使用Netmiko模块中的connect_miko函数将设备配置Cisco设备,然后使用send_command函数发送reload命令来重启设备。 ### 回答2: 要编写一个能够自动重启Cisco网络设备Python脚本,可以使用netmiko模块进行 SSH 连接和命令执行。以下是一个包含自动重启功能的示例脚本: ```python from netmiko import ConnectHandler import time def auto_restart(ip, username, password): cisco_device = { 'device_type': 'cisco_ios', 'ip': ip, 'username': username, 'password': password, } try: # SSH 连接设备 ssh_conn = ConnectHandler(**cisco_device) # 发送 reload 命令 output = ssh_conn.send_command_timing('reload') # 确认是否重启设备 if 'System configuration has been modified' in output: output += ssh_conn.send_command_timing('yes') # 运行配置保存确认(可选) output += ssh_conn.send_command_timing('write memory') # 关闭 SSH 连接 ssh_conn.disconnect() # 延迟等待设备重启完成 time.sleep(180) print("设备 {} 已重启成功。".format(ip)) except Exception as e: print("设备 {} 无法连接或发生错误。错误信息:{}".format(ip, str(e))) # 示例用法 if __name__ == '__main__': ip = "设备IP" username = "设备用户名" password = "设备密码" auto_restart(ip, username, password) ``` 请注意,这仅是一个示例脚本,你需要根据实际情况调整参数和配置使用此脚本时,请确保已经安装好了netmiko模块,并将设备的IP地址、用户名和密码替换为正确的值。 ### 回答3: 首先,你需要安装PythonNetmiko模块,可以使用pip命令进行安装: ``` pip install netmiko ``` 接下来,你需要编写自动重启脚本。下面是一个简单的示例: ```python from netmiko import ConnectHandler # 定义Cisco设备信息 cisco_device = { 'device_type': 'cisco_ios', 'ip': '192.168.1.1', 'username': 'your_username', 'password': 'your_password', 'secret': 'your_enable_password' } # 连接到设备 connection = ConnectHandler(**cisco_device) # 进入特权模式 connection.enable() # 发送重启命令 connection.send_command_timing('reload') # 确认重启提示 connection.send_command_timing('y') # 关闭连接 connection.disconnect() ``` 在上面的示例中,你需要替换`192.168.1.1`为你的Cisco设备的IP地址,并将`your_username`、`your_password`和`your_enable_password`替换为你的设备的相应凭据。 请注意,这只是一个简单的示例,实际中可能需要更加复杂的逻辑来处理各种情况,比如等待设备重新启动后再重新建立连接。但是,上述示例可以作为一个起点帮助你开始编写使用Netmiko模块的Cisco设备自动重启脚本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少陽君

谢谢老板的拿铁

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值