【linux】paramiko介绍 + 路由器设置tc命令使用

2023-09-21 10:46:16

背景:要给网络灵活的设置各种带宽限制,通过对路由器下发tc命令实现。设置python脚本的ssh链接 + tc脚本下发 + 针对某一个id进行配置。

Paramiko 是一个用于在 Python 中进行 SSH(Secure Shell)协议通信的库。

它提供了在远程服务器上执行命令、上传和下载文件、建立 SSH 连接等功能,使得开发者可以轻松地通过 Python 与远程服务器进行交互。Paramiko 是一个非常有用的工具,特别是在自动化任务、配置管理和远程服务器管理方面。

以下是 Paramiko 的一些主要特点和功能:

  1. SSH 连接支持:Paramiko 允许你在 Python 中建立 SSH 连接,可以用于执行命令、传输文件和进行远程管理。

  2. SCP 和 SFTP 支持:Paramiko 提供了用于文件传输的 SCP(Secure Copy Protocol)和 SFTP(SSH File Transfer Protocol)的实现,使你能够轻松地上传和下载文件。

  3. 远程命令执行:你可以使用 Paramiko 在远程服务器上执行命令,并获取其输出。这对于自动化任务和远程服务器管理非常有用。

  4. SSH 密钥认证:Paramiko 支持 SSH 密钥认证,这是一种更安全的身份验证方式,而不是使用密码。

  5. 支持代理:Paramiko 支持 SOCKS 代理和 HTTP 代理,以便在需要时通过代理服务器连接到远程主机。

  6. 支持各种加密算法:Paramiko 支持多种加密算法,包括 AES、DES、3DES、RSA 和 DSA 等,以确保通信的安全性。

  7. 跨平台性:Paramiko 是跨平台的,可以在多个操作系统上运行,包括 Linux、macOS 和 Windows。

  8. 活跃的社区支持:Paramiko 拥有活跃的社区和开发团队,因此你可以期望获得支持和不断的更新和改进。

以下是一个简单的示例,演示了如何使用 Paramiko 在远程服务器上执行命令:

import paramiko

# 创建 SSH 客户端
ssh_client = paramiko.SSHClient()

# 连接到远程服务器
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect('hostname', username='username', password='password')

# 执行远程命令
stdin, stdout, stderr = ssh_client.exec_command('ls -l')

# 输出命令执行结果
print(stdout.read().decode())

# 关闭 SSH 连接
ssh_client.close()

要使用 Paramiko,你需要先安装这个库,可以使用 pip 进行安装:

pip install paramiko

总之,Paramiko 是一个功能强大的库,可以帮助你轻松地进行远程服务器管理和自动化任务执行,而不需要手动登录到远程服务器。

登陆路由器设置tc命令

要在路由器上设置 Traffic Control(TC)命令,你通常需要登录到路由器的管理界面,然后在其中找到适当的选项来配置流量控制规则。每个路由器品牌和型号都有不同的管理界面,但一般步骤如下:

  1. 连接到路由器:首先,确保你已经连接到了你的路由器,可以通过有线或无线方式与路由器连接。你的计算机需要在同一局域网中。

  2. 查找路由器管理地址:通常,你可以在路由器的标签上找到默认的管理地址(例如,192.168.1.1)。如果没有找到,请查看路由器的手册或前往路由器制造商的网站以获取更多信息。

  3. 打开浏览器:打开一个网页浏览器,然后在地址栏中输入路由器的管理地址,并按下回车键。这将带你进入路由器的登录页面。

  4. 登录到路由器:输入路由器的管理员用户名和密码。这些凭据通常可以在路由器的标签上找到,或者你可能已经自行更改过。登录成功后,你将进入路由器的管理界面。

  5. 找到流量控制设置:在路由器的管理界面中,查找与流量控制或 Quality of Service (QoS) 相关的选项。不同路由器可能会将这些选项命名为不同的名称。一般来说,你需要查找一个与网络设置、QoS、带宽管理或流量控制相关的部分。

  6. 配置 TC 命令:在流量控制或 QoS 部分,你可以设置 TC 命令来控制网络流量。这可能包括设置带宽限制、延迟、丢包率等参数,以及指定要应用 TC 规则的设备或应用程序。

  7. 保存设置:完成配置后,确保保存设置。通常,你需要点击一个保存或应用按钮,以使更改生效。

  8. 测试流量控制:最后,测试你的流量控制设置,确保它们按预期工作。你可以使用网络速度测试工具或应用程序来检查网络性能和流量控制效果。

请注意,不同路由器型号和品牌的管理界面可能有所不同,因此具体的设置步骤可能会因路由器而异。如果你不确定如何在你的特定路由器上配置 TC 命令,建议查阅路由器的用户手册或在制造商的支持网站上查找相关文档和指南。

tc相关命令

“tc” 是 Linux 中的一个命令,它是 Traffic Control 的缩写,用于配置网络流量控制。Traffic Control 可以帮助你管理网络带宽、延迟、丢包等网络参数,以优化网络性能或模拟不同网络条件进行测试。以下是一些常见的 “tc” 命令及其介绍:

  1. tc qdisc(Queueing Discipline):

    • tc qdisc add: 添加一个队列规则。
    • tc qdisc del: 删除一个队列规则。
    • tc qdisc show: 显示当前系统上的队列规则。
  2. tc class(Traffic Class):

    • tc class add: 添加一个流量类别。
    • tc class del: 删除一个流量类别。
    • tc class show: 显示当前系统上的流量类别。
  3. tc filter

    • tc filter add: 添加一个过滤器规则,可以根据不同的标记或条件来控制数据包的流向。
    • tc filter del: 删除一个过滤器规则。
    • tc filter show: 显示当前系统上的过滤器规则。
  4. tc qdisc change

    • 用于修改现有的队列规则,包括修改带宽、延迟等参数。
  5. tc class change

    • 用于修改现有的流量类别,包括修改带宽、延迟等参数。
  6. tc qdisc replacetc class replace

    • 这些命令与 tc qdisc changetc class change 类似,但是可以用新的规则替换现有的规则。
  7. tc qdisc showtc class show

    • 这些命令用于显示当前系统上的队列规则和流量类别的详细信息,包括配置参数。
  8. tc qdisc statstc class stats

    • 用于查看队列规则和流量类别的统计信息,如包的数量、字节数等。
  9. tc -s

    • 通过使用 tc -s 命令,你可以查看更详细的队列和类别统计信息,包括每个队列的详细统计数据。
  10. tc policy

    • tc policy add: 添加一个策略规则,用于指定流量控制策略。
    • tc policy del: 删除一个策略规则。
    • tc policy show: 显示当前系统上的策略规则。

这些命令提供了广泛的功能,可以用于网络流量控制、QoS(Quality of Service)配置、模拟不同网络条件以进行测试等。要了解每个命令的详细用法和选项,可以使用 man tc 命令查看 “tc” 的手册页。

根据id指定设置和删除网络限制

tc qdisc addtc class add 是 Linux
中用于配置网络流量控制的两个不同的命令,它们的功能和作用是不同的。

  1. tc qdisc add(Queueing Discipline):

    • tc qdisc add 用于添加一个队列规则(Queue Discipline),用于管理和控制数据包的排队和调度。队列规则决定了数据包进入网络接口的方式以及它们在队列中的排序和处理方式。常见的队列规则包括 pfifo(简单的先进先出队列)、htb(层次 Token Bucket)等。通常,你会使用 tc qdisc add 来为网络接口分配特定的队列规则。
  2. tc class add(Traffic Class):

    • tc class add 用于添加一个流量类别(Traffic Class),它是用于对数据包进行分类和标记的规则。流量类别通常用于实现不同的服务质量(QoS)策略,例如,将网络流量分成高优先级和低优先级,或根据源/目标 IP 地址、端口号等进行分类。流量类别的设置可以帮助你在网络中应用特定的规则,以实现更精细的流量控制。

要更好地理解它们之间的区别,可以将它们看作是一种层次关系。首先,你使用 tc qdisc add 来定义如何排队和调度数据包,然后在这个队列规则下使用 tc class add 来对不同类型的流量进行分类和标记。

举个例子,你可以使用 tc qdisc add 来创建一个 Token Bucket 队列规则,然后使用 tc class add 来为不同的流量类别分配不同的令牌桶参数,以实现对高优先级和低优先级流量的不同处理。

总之,tc qdisc add 用于定义队列规则,而 tc class add 用于定义流量类别,它们一起协同工作以实现网络流量的控制和管理。

self.executeCommand("tc qdisc add dev {0} handle 1: root htb".format(networkinterface))
self.executeCommand("tc class add dev {0} parent 1: classid 1:{1} htb rate {2} ceil {3}".format(networkinterface, id, bandwidth, bandwidth))

设置

self.executeCommand("opkg install kmod-netem")
self.executeCommand("modprobe sch_netem")
# self.executeCommand("tc qdisc replace dev {0} parent 1:{1} handle {2}: netem delay {3} {4} loss {5}".format(networkinterface,id+1,id,delay,jitter,packetloss))
self.executeCommand("tc qdisc add dev {0} parent 1:{1} handle {1}: netem delay {2} {3} loss {4}".format(networkinterface, id, delay,jitter,packetloss))
if direction == "up":
   network.setNetworkByIpAndId(restrictIP,destinationports,id,outgoingInterface,delay,jitter,packetLoss, bandwidth)
elif direction == "down":
   network.setNetworkByIpAndId(restrictIP, destinationports, id, incomingInterface, delay, jitter, packetLoss, bandwidth)
else:
   network.setNetworkByIpAndId(restrictIP, destinationports, id, outgoingInterface, delay, jitter, packetLoss, bandwidth)
   network.setNetworkByIpAndId(restrictIP, destinationports, id, incomingInterface, delay, jitter, packetLoss, bandwidth)

删除

 if args.operation == "delete":
    network = NetworkSettings(routerIP)
    if restrictID == "-1":
        network.delAllCommands(incomingInterface)
        network.delAllCommands(outgoingInterface)
        network.closeSSH()
    else:
        network.delImpairmentsByID(incomingInterface, restrictID)
        network.delImpairmentsByID(outgoingInterface, restrictID)
更多推荐

Improving 3D Imaging with Pre-Trained Perpendicular 2D Diffusion Models

使用预先训练的垂直2D扩散模型改进3D成像论文链接:https://arxiv.org/abs/2303.08440项目链接:https://github.com/hyn2028/tpdmAbstract扩散模型由于其众多的优点已经成为一种流行的图像生成和重建方法。然而,大多数基于扩散的逆问题解决方法只处理2D图像,甚

【数据结构-树】红黑树

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。推荐:kuan的首页,持续学习,不断总结,共同进步,活到老学到老导航檀越剑指大厂系列:全面总结java核心技术点,如集合,jvm,并发编程redis,kaf

创造音乐的无限可能——Ableton Live 11 Suite for Mac音乐制作软件

如果您是一位音乐创作者,那么AbletonLive11SuiteforMac将是您实现创意的完美伴侣。作为一款全面且强大的音乐制作软件,它为您提供了一系列令人惊叹的工具和功能,帮助您打造出独一无二的音乐作品。AbletonLive11SuiteforMac是一款为专业音乐制作而设计的软件。它具备直观、灵活的界面,使您能

麒麟信安参编的两项云计算团体标准发布!助推云计算产业高质量发展

近日,由中国电子技术标准化研究院主办,全国信标委云计算和分布式平台分委会、全国信标委云计算标准工作组、云计算标准与应用工业和信息化部重点实验室承办的第十二届云计算标准和应用大会在北京举办。本次大会上,麒麟信安起草参编的《信息技术云计算智能云服务用户体验度量模型》《信息技术云计算边缘云协同技术要求》两项团体标准正式发布!

LabVIEW应用开发——前面板和程序框图

上篇我们讲述了LabVIEW的安装并且新建了一个VI程序成功运行,这篇我们详细了解界面上一些工具、属性和层次结构。LabVIEW安装我们双击打开上次创建的.vi文件。这时候我们发现只有前面板,程序框图界面不见了,我们需要使用Ctrl+E或者在Windows-->ShowBlockDiagram选项中把程序框图调出来。而

科技活动类型

声明本文是学习GB-T42776-2023科技评估分类.而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们1范围本文件确立了科技评估的分类原则,描述了分类方法,规定了编码方法、分类与代码。本文件适用于科技评估的规划、设计、委托、组织、实施、管理、研究、培训和信息化等相关活动。2规范性引用文件下列文件中

MYSQL索引——B+树讲解

B-/B+树看MySQL索引结构B-树B-树,这里的B表示balance(平衡的意思),B-树是一种多路自平衡的搜索树.它类似普通的平衡二叉树,不同的一点是B-树允许每个节点有更多的子节点。下图是B-树的简化图.B-树有如下特点:所有键值分布在整颗树中;任何一个关键字出现且只出现在一个结点中;搜索有可能在非叶子结点结束

睿趣科技:抖音开一家网店大概什么时候回本

随着移动互联网的迅猛发展,社交媒体平台如抖音成为了商家推广产品和服务的热门渠道之一。许多人都希望能够通过在抖音上宣传自己的产品,甚至考虑开一家网店,但回本的时间是一个关键问题。本文将探讨抖音开一家网店大概什么时候回本的问题。首先,回本时间的长短与多种因素有关,包括产品的类型、市场竞争、推广策略等。一般来说,如果你的产品

性能测试之压力测试

文章目录一.基本介绍二.性能指标三.下载安装JMeter1.下载安装包2.启动JMeter四.使用JMeter1.模拟用户请求2.填写测试地址3.接收测试结果4.结果解释一.基本介绍压力测试考察当前软硬件条件下系统所能承受的最大负荷并找到系统瓶颈所在。压测是为了系统在线上的处理能力和稳定性维持在一个范围内。压力测试可以

Mysql——压缩包方式安装教程

一.Mysql压缩包下载方式zip版(5.7及8.0)的下载需到官方网站下载,不同版本对应能安装在不同的操作系统下,本次介绍的是mysql-8.0.30-winx64在win10下的安装方式。下载网址:MySQL::DownloadMySQLCommunityServer二.Mysql的安装流程1.下载压缩包至本机目录

DBAPI插件开发指南

DBAPI插件开发指南插件市场您可以去插件市场下载插件插件的作用DBAPI的插件分4类,分别是数据转换插件、缓存插件、告警插件、全局数据转化插件缓存插件对执行器结果进行缓存,比如SQL执行器,对查询类SQL,sql查询结果进行缓存,这样避免频繁的查询数据库,对数据库造成压力。缓存逻辑由用户自己编写,用户可以缓存到red

热文推荐