我正在使用jnca库来收集路由器发送的NetFlow记录.路由器发送的NetFlow记录版本为9.
当从Wireshark观察NetFlow分组时,具有模板id 263的流集包含关于发起者八位字节和响应者八位字节的数据,其可用于确定与流相关联的字节数.
但问题是jcna无法获得这些值.对于八位字节,它始终显示为零.
currOffset = t.getTypeOffset(FieldDefinition.InBYTES_32);
currLen = t.getTypeLen(FieldDefinition.InBYTES_32);
if (currOffset >= 0 && currLen > 0) {
dOctets = Util.to_number(buf, off + currOffset, currLen) * t.getSamplingRate();
}
Run Code Online (Sandbox Code Playgroud)
这是用于获取dOctets的代码段.即使对于模板ID 263,这也返回零.
但是当它根据NetFlow模板ID 263计算时,它会提供正确的数据.(给出启动器八位字节并获得响应者八位字节46应该用50替换,因为特定记录的长度是4字节)
dOctets = Util.to_number(buf, off + 46, 4)
Run Code Online (Sandbox Code Playgroud)
46是Initiator Octets记录位于特定NetFlow数据包的地方.(使用Wireshark记录.)
这是jnca的问题吗?希望有些熟悉jcna的人能给我一些帮助.
我正在尝试在Ubuntu上安装Cisco VPN Client,但我遇到了问题.那么如何在Ubuntu 16.04 LTS上安装它?
我正在将REST API用于Cisco CMX设备,并尝试编写Python代码,该代码向API发出GET请求以获取信息.代码如下,除了更改必要的信息外,与文件中的代码相同.
from http.client import HTTPSConnection
from base64 import b64encode
# Create HTTPS connection
c = HTTPSConnection("0.0.0.0")
# encode as Base64
# decode to ascii (python3 stores as byte string, need to pass as ascii
value for auth)
username_password = b64encode(b"admin:password").decode("ascii")
headers = {'Authorization': 'Basic {0}'.format(username_password)}
# connect and ask for resource
c.request('GET', '/api/config/v1/aaa/users', headers=headers)
# response
res = c.getresponse()
data = res.read()
Run Code Online (Sandbox Code Playgroud)
但是,我不断收到以下错误:
Traceback (most recent call last):
File "/Users/finaris/PycharmProjects/test/test/test.py", line 14, in <module>
c.request('GET', '/api/config/v1/aaa/users', …
Run Code Online (Sandbox Code Playgroud) 尝试使用paramiko库ssh到Cisco ACS设备时出现以下错误.我已经在python中使用了paramiko而没有问题,我可以从命令行ssh到这个框,或者使用putty而没有问题.我打开了调试并在这里复制了信息.如果你能帮助我,请告诉我.
import paramiko
import sys
import socket
try:
paramiko.common.logging.basicConfig(level=paramiko.common.DEBUG)
sshConnection = paramiko.SSHClient()
sshConnection.set_missing_host_key_policy(paramiko.AutoAddPolicy())
sshConnection.connect('server',username='username',password='password')
except paramiko.BadAuthenticationType:
sys.stdout.write('Bad Password!\n')
sys.exit()
except paramiko.SSHException, sshFail:
sys.stdout.write('Connection Failed!\n')
sys.stdout.write('%s\n' % sshFail)
sys.exit()
except socket.error, socketFail:
sys.stdout.write('Failed to open socket\n')
sys.stdout.write('%s\n' % socketFail)
sys.exit()
Run Code Online (Sandbox Code Playgroud)
并返回调试输出:
DEBUG:paramiko.transport:starting thread (client mode): 0x14511d0L
INFO:paramiko.transport:Connected (version 2.0, client OpenSSH_5.3)
DEBUG:paramiko.transport:kex algos:['diffie-hellman-group14-sha1'] server key:['ssh-rsa'] client encrypt:['aes256-cbc', 'aes128-cbc', '3des-cbc'] server encrypt:['aes256-cbc', 'aes128-cbc', '3des-cbc'] client mac:['hmac-sha1'] server mac:['hmac-sha1'] client compress:['none', 'zlib@openssh.com'] server compress:['none', 'zlib@openssh.com'] client lang:[''] server lang:[''] kex follows?False
ERROR:paramiko.transport:Exception: …
Run Code Online (Sandbox Code Playgroud) 我已经广泛阅读了这篇文章,并研究了Exscript,paramiko,Fabric和pxssh,我仍然丢失了对Cisco路由器的持久ssh会话.我是python脚本的新手.
我试图在Python中编写一个脚本,将SSH连接到Cisco设备,运行"show version",在记事本中显示结果,然后结束脚本.
我可以使用不需要用户与设备交互的show命令.例如:
from Exscript.util.interact import read_login
from Exscript.protocols import SSH2
account = read_login()
conn = SSH2()
conn.connect('192.168.1.11')
conn.login(account)
conn.execute('show ip route')
print conn.response
conn.send('exit\r')
conn.close()
Run Code Online (Sandbox Code Playgroud)
上面的脚本将显示"show ip route"的结果.
如果我尝试conn.execute('show version')脚本超时,因为Cisco设备希望用户按空格键继续,按返回显示下一行或任何键退回到命令行.
如何执行show version命令,按空格键两次以显示show version命令的整个输出,然后在python中打印?
谢谢!!!!
我有时必须编写软件来与驻留在Cisco VPN中的特定服务器建立套接字.我只是编写我的软件,好像没有VPN(使用标准套接字库).在运行此程序时,我使用计算机上安装的客户端软件手动连接到VPN,然后运行程序本身.
但是,希望编写软件以利用能够直接通过VPN进行通信的专用套接字库,而无需使用任何已安装的客户端软件.
这是一些Java代码,说明了我想要的功能:
String vpnHost = ...;
String vpnUser = ...;
String vpnPassword = ...;
VPNConnection vpnConnection = new CiscoVPNConnection(vpnHost, vpnUser, vpnPassword);
String serverHost = ...;
int serverPort = ...;
Socket socket = vpnConnection.openSocket(serverHost, serverPort);
Run Code Online (Sandbox Code Playgroud)
是否可以在不安装任何客户端软件的情况下建立与VPN的连接?
正如标题所说,尝试通过bash连接vpn.以下脚本似乎最接近我正在寻找的答案:
#!/bin/bash
/opt/cisco/anyconnect/bin/vpn -s << EOF
connect https://your.cisco.vpn.hostname/vpn_name
here_goes_your_username
here_goes_your_passwordy
EOF
Run Code Online (Sandbox Code Playgroud)
当我运行它时,vpn启动,但然后退出没有错误,没有连接.这似乎是由-s引起的.如果我删除此参数,VPN将启动,但不会输入任何命令(即connect vpn,username,password).从我读到的-s选项将允许传递用户名/密码.救命!
我在这个站点和其他多个位置搜索但我无法解决在一个命令后连接和维护ssh会话的问题.以下是我目前的代码:
#!/opt/local/bin/python
import os
import pexpect
import paramiko
import hashlib
import StringIO
while True:
cisco_cmd = raw_input("Enter cisco router cmd:")
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.221.235', username='nuts', password='cisco', timeout = 30)
stdin, stdout, stderr = ssh.exec_command(cisco_cmd)
print stdout.read()
ssh.close()
if cisco_cmd == 'exit': break
Run Code Online (Sandbox Code Playgroud)
我可以运行多个命令,但是对于每个命令,都会创建一个新的ssh会话.当我需要配置模式时,上述程序不起作用,因为ssh会话不被重用.非常感谢解决此问题的任何帮助.
我需要自动化 Cisco VPN 客户端版本 5.0.07.0440 的登录过程。我尝试过使用这样的命令行,但有问题:
vpnclient.exe connect MyVPNConnection user username pwd password
Run Code Online (Sandbox Code Playgroud)
这将启动连接,但随后会显示“用户身份验证”对话框,询问用户名、密码和域。用户名和密码已填写,不需要域。
要继续,我必须按“确定”按钮。
有没有办法不显示对话框并自动登录VPN?
那么在Paramiko上SSHClient.exec_command()
发送和发送有什么区别SSHClient.invoke_shell
?
我可以使用exec_command
MikroTik 路由器设备发送和执行命令,但无法使用send
( invoke_shell()
)执行它。
另一方面,我可以向Cisco 设备发送和执行命令send
( invoke_shell()
),但不能使用exec_command
.
我的意思是配置命令,如路由(ip route xxx xxx)或make vlan或添加ip地址等。