- 博客(65)
- 收藏
- 关注
原创 TMPDIR在pip|pip3 install时的作用以及tmp只有noexec权限的解决方法
pip在安装文件会download文件到临时目录,临时目录是根据环境变量TMPDIR来判断,如果没有该变量那么会使用tmp目录作为临时目录下载文件,并执行编译等操作,执行前会目录是否有exec权限,如果没有就会报错。
2024-08-30 18:39:13
429
原创 Python Request源码解读之auth.py
Digest认证是一种基于摘要算法的认证方式,使用时需要先发送一个请求,服务端返回一段Token,客户端需要使用这个Token进行加密后再发送请求。Python中的Request库同样可以通过设置auth参数实现Digest认证。
2024-01-02 09:53:47
1178
原创 Python中的__repr__()
在Python中,__repr__() 是一个特殊的方法,用于返回对象的“官方”字符串表示。当你尝试打印一个对象或者将一个对象转换为字符串时,如果没有重写 __repr__() 方法,Python会调用 __str__() 方法。
2023-12-29 17:52:17
1111
原创 Python Request源码解读之api.py
api.py这个模块定义了一个名为request的函数,该函数接收一个HTTP方法(如GET、POST等)、一个URL和一些可选的关键字参数(kwargs),然后构建并发送一个HTTP请求。
2023-12-29 17:32:56
558
原创 Python Request源码解读之 adapters.py
requests.adapters 是 requests 库中的一个子模块,它包含了一些用于处理 HTTP 请求的适配器类。这些适配器类主要用于处理与 HTTP 请求相关的各种细节,例如超时、重试、连接池管理等。
2023-12-29 16:59:07
1290
原创 Pthon Request库源码解读之__version__.py _internal_utils.py
Pthon Request库源码解读之__version__.py _internal_utils.py
2023-12-28 13:46:57
421
原创 Python requests库 概述
Python的requests库是一个非常流行的HTTP客户端库,用于发送HTTP请求。它提供了一个简单易用的API,使发送各种HTTP请求变得非常简单
2023-12-28 09:33:14
1392
原创 Jinja2是一种基于Python的模板引擎
Jinja2是一种基于Python的模板引擎,用于生成HTML或其他文本文件。它具有简洁的语法和强大的功能,使得模板的编写和维护变得简单而高效。
2023-12-27 11:28:48
1973
原创 Pyeapi是一个Python API框架,它提供了一种简单的方式来构建、部署和管理API
Pyeapi是一个Python API框架,它提供了一种简单的方式来构建、部署和管理API。Pyeapi基于Python语言,可以帮助开发人员快速构建、测试和部署API。它提供了一组易于使用的工具和库,使开发人员能够轻松地创建、调试和优化API。Pyeapi还支持多种API风格,包括RESTful、SOAP和gRPC等2。
2023-12-27 10:44:39
442
原创 Paramiko是一个Python实现的SSH2远程安全连接模块,它支持认证及密钥方式。
Paramiko是一个Python实现的SSH2远程安全连接模块,它支持认证及密钥方式。具体来说,Paramiko是一个用于实现SSHv2协议的模块,它可以用于创建SSH客户端或服务器端。通过使用Paramiko,你可以连接到远程服务器、执行命令、传输文件等操作。Paramiko还支持多种认证方式,包括口令认证和公钥认证,以及多种密钥交换算法和压缩方法。使用Paramiko模块可以编写Python代码,实现SSH相关功能,例如文件传输、远程执行命令等
2023-12-25 16:51:38
1592
原创 Pexpect 是一个 Python 库,用于自动化与终端交互的任务
Pexpect 是一个 Python 库,用于自动化与终端交互的任务。它提供了一种简单的方式来编写脚本,以便与终端程序进行交互。以下是 Pexpect 的一些常用参数和方法的更详细说明:
2023-12-25 16:01:44
1846
原创 U-Boot(Universal Boot Loader
U-Boot(Universal Boot Loader)是一个开源的、通用的引导加载程序,主要用于嵌入式系统的启动和初始化。以下是U-Boot的一些具体作用和参数的详细解释:
2023-12-22 18:01:52
1297
原创 C语言 空指针导致内存溢出
当程序中的指针为空时,它指向的是一个无效的内存地址。如果程序尝试通过这个空指针来访问或写入内存,就会导致所谓的"空指针解引用"错误。
2023-12-22 16:55:16
1234
原创 Grep工具详解
示例:grep -I ‘hello’ file1.txt file2.bin 会搜索文本文件 file1.txt 中包含 “hello” 的行,但忽略二进制文件 file2.bin。示例:grep -D ‘hello’ file1.txt file2.txt 会搜索整个文件内容中包含 “hello” 的行,并显示所在文件的名称。示例:grep -i ‘hello’ file.txt 会匹配 “Hello”, “HELLO”, “hElLo” 等。
2023-12-20 13:54:30
996
原创 .bash_history|.bashrc|.bash_logout|.profile的作用分别是啥
需要注意的是,对于 bash,.profile 和 .bash_profile 都可以用于此目的,但它们的行为可能略有不同。当用户启动一个新的非登录 shell 时,.bashrc 文件会被执行。这通常用于设置环境变量、别名、函数等。这些文件通常位于用户的家目录中(例如 /home/username/.bashrc),并且通常以点(.)开头,这意味着它们是隐藏文件。当用户退出登录 shell 时,.bash_logout 文件会被执行。每当用户退出 shell 时,新的命令历史会被追加到这个文件中。
2023-12-18 15:19:19
910
原创 certtool 生成自有证书
certtool 是一个用于处理X.509证书的工具,它是由GNU的libksba库提供的。首先,您需要一个CA的公钥和私钥。这将使用您的CA公钥和私钥以及证书请求来创建一个PKCS10格式的证书,并将其保存为 mycert.pem。这将使用先前生成的私钥创建一个PKCS10格式的证书请求,并将其保存为 myreq.csr。这将验证证书链是否有效。如果证书链无效或缺少任何中间证书或根证书,该命令将显示错误消息。这将生成一个2048位的RSA私钥,并将其保存为 mykey.pem。这将显示关于证书的信息。
2023-12-15 14:39:14
1310
原创 Python Click 简单使用说明
Click是一个Python的命令行接口库,它由Alexandru Dutra和Ignacio Vergara于2010年创建。Click的目标是提供一种简单而灵活的方式来创建命令行应用程序。
2023-12-14 15:12:17
1802
原创 Netlink是Linux内核提供的一种用于内核与用户空间进程之间通信的机制。
Netlink是Linux内核提供的一种用于内核与用户空间进程之间通信的机制。它允许内核向用户空间发送消息,同时也可以接收用户空间的请求并做出相应的响应。
2023-12-14 10:05:21
932
原创 socket是如何进行通信的
Socket通信的基本原理是基于TCP/IP协议栈的。简单来说,Socket是网络中的一种端点,客户端通过Socket与服务器进行连接和通信。
2023-12-13 19:40:56
1035
原创 C语言 内存池代码解析
这个内存池用于存储 demo_test_t 类型的对象。demo_test_main_init 函数是主初始化函数,它调用了 demo_pool_init 来初始化内存池。VLIB_NODE_FN(demo_test_input_node) 定义了一个名为 demo_test_input_node 的输入节点函数。VLIB_INIT_FUNCTION(demo_test_main_init) 是一个宏,用于将 demo_test_main_init 函数注册为需要执行的初始化函数。
2023-12-13 10:30:19
468
原创 C memmove的使用
memmove是一个C语言标准库函数,用于将一定数量的字节从一个内存位置移动到另一个内存位置。packet - 4:目标内存区域的起始地址(也就是memmove的dest参数)。packet - 8:源内存区域的起始地址(也就是memmove的src参数)。总结一下,这行代码的意思是:将从packet开始,向前偏移8个字节的内存区域中的数据,移动到从packet开始,向前偏移4个字节的内存区域中。移动的字节数是固定的,由8加上一个计算值。这行代码的意图是将一块内存区域的内容移动到另一块内存区域。
2023-12-12 19:54:00
443
原创 C语言中的柔性数组
在这个例子中,我们创建了一个名为FlexArray的结构体,它包含一个整数size和一个柔性数组data。假设有一个结构体structS,其中最后一个元素是一个大小未知的字符数组a,即柔性数组。C语言中的柔性数组(Flexible Array Member)是一种特殊的数组,它被定义在结构体的最后一个元素中,其大小未知,也就是所谓的0长度。通过使用柔性数组,我们可以在结构体中创建可变长的数组,以适应程序运行时的需要。需要创建一个可调整大小的数组的情况。例如,需要一个可以动态扩展和缩小的数组。
2023-12-12 19:49:34
622
原创 C语言预读取技术 __builtin_prefetch
__builtin_prefetch 是一个编译器内置函数,用于在编译时向编译器发出指令,要求在执行期间预取内存数据。它通常用于提高程序的性能,特别是对于那些需要频繁访问内存的情况。
2023-12-11 14:05:42
2203
原创 C语言为啥要使用宏定义和宏展开
例如,当预处理器在处理某个包含__include_action_path_tools.h__的文件时,如果__include_action_path_tools.h__已经被包含过一次,那么__include_action_path_tools.h__后面的代码就不会再被编译,从而避免了重复包含的问题。:#ifndef是"if not defined"的缩写,意思是如果__include_a_path_tools_h__这个宏没有定义,那么以下的代码将会被包含在编译中。#ifndef的作用。
2023-12-11 09:21:56
622
原创 Python logging 日志模块及代码示例
Python 的 logging 模块提供的一个处理器,它用于将日志记录消息放入一个队列中,而不是直接写入日志文件或发送到控制台。:将日志记录写入到指定的文件中,并在文件大小达到指定大小时,将当前文件备份并创建一个新的日志文件。:将日志记录写入到指定的文件中,并在指定的时间间隔到达时,将当前文件备份并创建一个新的日志文件。这种Handler通常用于远程日志记录,可以将日志记录发送到远程服务器进行处理。将日志记录存入内存中的指定缓存,当缓存达到指定大小后,将缓存中的日志记录写入到指定的文件中。
2023-12-11 09:10:47
1059
2
原创 Python Tacacs故障诊断记录
如果用户没有提供用户名,那么服务器可以发送另一个TAC_PLUS_AUTHEN_STATUS_GETUSER请求,但是服务器必须限制允许的重试次数,建议限制为三次。该会话由一个单独的START,接着是零个或更多对REPLYs,然后CONTINUEs,最后是一个是表示PASS、FAIL或ERROR的回复。第三步,对比差异,家里用的Cisco的3A进行验证的,客户使用的是一家国内品牌做的3A鉴权服务,那问题可能出现在这里。解读代码,因为我们的代码是直接调用插件的,所以没有设置的值使用的是默认值。
2023-12-08 14:27:16
1018
原创 Python TACACSClient unpacked代码解析
在Python中,@classmethod是一个装饰器,用于将一个方法变为类方法。这样的方法可以访问类,但不能访问实例。这是与实例方法(即没有装饰的方法)的主要区别。一个类方法可以这样定义:在这个例子中,@classmethod告诉Python解释器my_class_method应该被视为类方法。cls参数是类本身,而不是类的实例。你可以使用这个参数来调用其他类方法,访问类属性,或者调用在其他类中定义的方法。注意,虽然类方法可以访问类,但它们不能访问实例。如果你需要访问实例,你需要使用实例方法。同时,注意
2023-12-07 14:08:33
497
原创 在C语言中,单引号和双引号的区别
在这个例子中,编译器会因为试图将一个包含多个字符的字符串赋值给一个单个字符的数组而报错。在C语言中,单个字符应该用单引号包围,而字符串应该用双引号包围。在这个例子中,"test"是一个字符串,它由双引号包围。a是一个字符数组,它被初始化为这个字符串。每个字符(t, e, s, t)都存储在a数组中。在C语言中,单引号和双引号用于表示不同类型的字符和字符串。
2023-12-07 10:10:49
3453
原创 SQL注入攻击
什么是SQL注入攻击?SQL注入攻击是指利用应用程序对用户输入的数据合法性没有判断的漏洞,攻击者在Web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
2023-12-06 17:46:01
626
原创 Linux bin包生成
在实际项目时我们很少把源码用个tar给到客户,这样显得很不专业,且有的时候我们提供补丁,那么这个时候我们提供一个补丁的bin包可以直接安装运行就显得很高大上了。
2023-12-06 15:36:23
937
原创 Dpkg常用命令详解及使用手册
dpkg是Debian系列Linux发行版中的重要命令,用于管理安装的软件包。dpkg是Debian软件包管理系统的中流砥柱,负责安全卸载软件包、配置,以及维护已安装的软件包,也是Debian系统中众多软件包管理工具的后端。有关dpkg的更多介绍参阅:dpkg -i package_file:安装指定的软件包。dpkg -r package:删除已安装的软件包,但保留配置文件。dpkg -P package:完全清除已安装的软件包,包括删除配置文件。
2023-12-06 10:29:48
6466
原创 Klish 安装及使用说明
一、Klish框架简介:命令行界面(CLI)应用程序被广泛使用。无论是网络设备管理、系统配置还是软件调试,命令行界面提供了一种高效和灵活的交互方式。同时为了简化命令行界面的开发过程,Klish框架应运而生。Klish 是一个基于 C 语言开发的交互式命令行接口(CLI)工具,它提供了一种简单而灵活的方式来创建和管理命令行界面。Klish 允许开发者定义命令、选项和参数,以及相应的操作和输出。使用 Klish我们可以自由构建自定义的命令行界面,以满足特定的需求。二、下载源码三、安装依赖。
2023-12-05 19:38:47
1522
1
Arista Networks has become a key player when it comes to softwar
2023-12-25
In computer science, a red–black tree is a specialised binary
2023-12-15
红⿊树(英y¥Red–black tree)是⼀种⾃平⼆查找树,是在计算机科-中⽤的⼀种据结构
2023-12-15
Python 这是一个生成圣诞树和祝福语的小程序,你可以输入两句祝福语分别表示男方和女方的祝福
2023-12-08
klish-2.2.2.tar.xz
2023-12-06
Linux一键生成bin包资源下载
2023-12-06
klish-3.0.0.tar.xz
2023-12-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人