Подключение с транспортом asynctelnet#
При подключении asynctelnet надо указать транспорт asynctelnet и порт 23. Кроме того, надо данный момент (scrapli 2021.1.30) при подключении asynctelnet к недоступному адресу таймаут будет через 2 минуты, чтобы уменьшить его, можно использовать async_timeout:
import asyncio
from scrapli.driver.core import AsyncIOSXEDriver
from scrapli.exceptions import ScrapliException
from async_timeout import timeout
r1 = {
"host": "192.168.100.11",
"auth_username": "cisco",
"auth_password": "cisco",
"auth_secondary": "cisco",
"auth_strict_key": False,
"transport": "asynctelnet",
"port": 23,
}
async def send_show(device, command):
# На данный момент (scrapli 2021.1.30) таймаут при подключении к недоступному
# хосту будет 2 минуты, поэтому пока что лучше добавлять wait_for или
# async_timeout вокруг подключения
try:
async with timeout(10):
async with AsyncIOSXEDriver(**device) as ssh:
result = await ssh.send_command(command)
return result.result
except ScrapliException as error:
print(error, device["host"])
except asyncio.exceptions.TimeoutError:
print("asyncio.exceptions.TimeoutError", device["host"])
if __name__ == "__main__":
output = asyncio.run(send_show(r1, "show ip int br"))
print(output)