chatGPT的使用。

1、如何提问很重要,就像你AI绘画写关键词的语法一样,人家说需要苏格拉底式的提问,提问是有逻辑递进顺序的,还可以在问题前提示,如这样提问:

the content is practical, operable, not exaggerated

The question is: Some people want to ask me for help, but theywon’t pay me

2、建立知识库来帮助chatgpt理解解决问题

利用ChatGPT提供技术支持可以帮助你更快速、更高效地解决客户的问题。建一个知识库可以更好的帮助你利用ChatGPT提供技术支持:
建立知识库:首先,你需要建立一个技术支持的知识库,其中包括常见问题和解决方案。
这可以帮助ChatGPT更好地理解问题,并提供准确的答案。你可以使用一些知识管理工
具,例如知识库软件、FAQ文档等来构建知识库。
利用ChatGPT提供答案:当客户向你提出问题时,你可以利用ChatGPT提供答案。你可以
输入客户的问题,ChatGPT会基于你建立的知识库,提供最佳的解决方案。

你需要记录问题和解决方案。这可以帮助你
建立更完善的知识库,

3、不用服务器直接部署

https://github.com/Yidadaa/ChatGPT-Next-Web

激光窃听声音

现代激光窃听的基本原理,都是通过红外激光器,如:激光雷达,通过窗户向室内发射看不见的红外激光,激光透过玻璃窗到达室内物体时产生回波,这个回波是由于声音振动而引起声源周边物体产生同步的振动波,这个回波再通过窗户射出传递给接收器,由接收器通过准确的测量,并进行多普勒转换,所获数据经计算机进行处理,还原出音频。

      可以通过在窗户上贴宽光谱激光窃听阻断膜来阻止这类窃听

浪潮SA5212M4的IPMI设置

最近在马云家看到浪潮SA5212M4的服务器性价比很好,缺点就是风扇的噪音受不了,按卖家提示在IPMI设置风扇转速来降噪

进BIOS,选择Server Mgmt –>BMC network configuration,进入BMC网络配置界面

里面的BMC Sharelink是指把网口2也复用为管理口,后面的dedicated才是我们的专用管理口设备,选Get BMC Dedicated 选择Manual 配置独享BMC端口的IP

configuration选择static; 配置为静态模式,填一个管理IP地址

如果原用户admin 密码admin有效,可略过下面的BMC用户设置,不行则按下新增

BMC用户设置:进进BIOS,选择Server Mgmt –>BMC User Settings在里面新增一个用户,里面的通道选1,权限选administrator,新增完后还要在charge里把用户enable.

然后就可以把自己电脑IP设置为以上管理IP同网段的地址,网线连接IPMI管理口来来访问,记得要用https,进去后把风扇速度设置为手动控制20%就可以了,

设置后,拔了电源线会失效,但如果在系统内关机不断电不会失效。

python-selenium定位方法

元素选择策略
在 WebDriver 中有 8 种不同的内置元素定位策略:


class name 定位class属性与搜索值匹配的元素(不允许使用复合类名)
css selector 定位 CSS 选择器匹配的元素
id 定位 id 属性与搜索值匹配的元素
name 定位 name 属性与搜索值匹配的元素
link text 定位link text可视文本与搜索值完全匹配的锚元素
partial link text 定位link text可视文本部分与搜索值部分匹配的锚点元素。如果匹配多个元素,则只选择第一个元素。
tag name 定位标签名称与搜索值匹配的元素
xpath 定位与 XPath 表达式匹配的元素


class name定位
1.查找元素:页面打开f12,点击左上角的箭头,再去点击对应需要定位的元素定位,找到该元素下的class属性,在ctrl+f查找,该属性是否唯一,唯一就可以定位,不唯一就换其他方法定位:(一时找不到class唯一的,就用下图代替说明问题)
定位代码:

# 导入需要的包
from selenium import webdriver
from selenium.webdriver.common.by import By


driver = webdriver.Chrome() # 实例化webdriver
driver.get("http://www.baidu.com/") # 打开网页
driver.find_element(By.CLASS, "login-item")



nam、id、link tex、tag name定位和class name类似

driver.find_element(By.NAME, "name定位元素")
driver.find_element(By.ID, "id定位元素")
driver.find_element(By.LINK_TEXT, "LINK_TEXT定位元素")
driver.find_element(By.PARTIAL_LINK_TEXT, "PARTIAL_LINK_TEXT定位元素")
driver.find_element(By.TAG_NAME, "TAG_NAME定位元素")

主要介绍xpath定位,这个可以应对测试中80%以上的定位
1.使用xpath方法结合id、name、class定位也可以

driver.find_element(By.XPATH, "//*[@class='login-default']").click()
driver.find_element(By.XPATH, "//*[@name='login-default']").click()
driver.find_element(By.XPATH, "//*[@id='login-default']").click()

2.xpath:其他属性定位:在实际工作过程中,往往会遇到一个元素id、name、class属性都没有,这时候也可以通过其它属性定位到

driver.find_element(By.XPATH, "//*[@type='password']")

3.xpath:标签定位,在实际工作中,还会遇到一种情况就是相同属性具有同一个名字,这时就需要通过标签筛选,定位更准一点
如果不想制定标签名称,可以用*号表示任意标签
如果想制定具体某个标签,就可以直接写标签名称

driver.find_element(By.XPATH, "//input[@type='password']").send_keys("gld123")
driver.find_element(By.XPATH, "//a[@class='login']").click()

4.xpath:相对路径/绝对路径定位,

如果一个元素,它的属性不是很明显,无法直接定位到,这时候我们可以先找它上一层元素(父元素)
找到父元素后,再找下个层级就能定位到了
要定位的是input这个标签,它的老爸的id=s_kw_wrap.
要是它老爸的属性也不是很明显,就找它爷爷id=form
于是就可以通过层级关系定位到

driver.find_element(By.XPATH, "//div[@class='login-default']/div/span/input").send_keys("17027517202")

5.xpath:索引,

如果一个元素它的兄弟元素跟它的标签一样,这时候无法通过层级定位到。因为都是一个父亲生的,多胞胎兄弟。
虽然双胞胎兄弟很难识别,但是出生是有先后的,于是可以通过它在家里的排行老几定位到。
用xpath定位老大、老二和老三(这里索引是从1开始算起的,跟Python的索引不一样)

driver.find_element(By.XPATH, "//div[@class='login-default']/div[2]/span/input").send_keys("17027517202")

6.xpath:逻辑运算

  1. xpath还有一个比较强的功能,是可以多个属性逻辑运算的,可以支持与(and)、或(or)、非(not)
  2. 一般用的比较多的是and运算,同时满足两个属性
driver.find_element(By.XPATH, "//input[@type='password' and @class='login-default']").send_keys("gld123")

使用selenium

一、环境搭建
(1)安装selenium库:
如果安装不上就上国内源

pip install selenium -i http://pypi.douban.com/simple –trusted-host pypi.douban.com

(2)下载Chrome驱动:
chromedriver的下载地址http://chromedriver.storage.googleapis.com/index.html

    需要注意的是这里有很多种版本,这里需要下载和你浏览器版本最接近的一个。注意是最接            近,打开浏览器,在地址栏输入chrome://version/便可以查看到谷歌当前的版本号

    解压会得到一个chromedriver.exe(名字不同就必成这个)文件。如果没有最新版本可到以下地址查看
https://googlechromelabs.github.io/chrome-for-testing/

因为chrome会自动更新,所以要在服务或者计划任务管理(控制面板-系统和安全-windows工具-计划任务)里把自动更新禁用

(3)将Chromedriver加入到path:

1.桌面右击谷歌浏览器–>打开文件所在位置,将刚解压的.exe文件复制一份到此路径下

  1. 将刚刚解压的.exe文件复制一份,放入python根目录中 至于如何查看自己的python根目录,可在cmd下进python,再输入 where python可得目录
  2. 将.exe文件再复制并放到当前工程文件同文件夹下

可以测试下看是否可以,python编译器,编写如下代码,运行如果出现窗口,提示正受测试软件控制,说明可以了,(反应慢,第一次可能要1分多钟)

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
sleep(2)
driver.quit()

到此处可能已可以了,如果不行进行4和5步,

(4)将浏览器环境变量添加到path:
打开开始菜单->我的电脑(或计算机)->系统属性->高级系统设置->环境变量,编辑用户变量里的path, 在最后面添加;C:\Program Files (x86)\Google\Chrome\Application\ 或者在最前面添加C:\Program Files (x86)\Google\Chrome\Application\ 修改完之后点击确定按钮保存配置。

如果出错,则:

将chromedriver.exe文件放入python的scripts目录,并将该scripts目录添加到系统path变量中;
3、找到Google Chrome安装目录,一般在C:\Users\Administrator\AppData\Local\Google\Chrome\Application\Google Chrome.exe,将Google Chrome.exe复制一个出来,并重命名为chrome.exe,并将目录C:\Users\Administrator\AppData\Local\Google\Chrome\Application\添加到系统path变量中

注意你的路径不一定和他相同,这个就是右击谷歌浏览器图标的路径,复制下来就好了


VMWare虚拟机设置各虚拟机与主机间局域内网

装好爱快虚拟机后,可以把此虚拟机的其中一张虚拟网卡和电脑及其它虚拟机设置共组一个局域内网。

方法为在虚拟机设置中把这张网卡设置为“仅主机”,然后启动爱快,把这张网卡绑定一个lan口,把IP设置为192.168.80.1,然后进主机系统的网卡设置,把虚拟的Vnet1这个网卡的IP地址设置为192.168.80.2,此时在电脑主机中访问192.168.80.1应该能访问到爱快路由界面了。

找直播m3u8地址

之前找一个被cloudflare加速过的直播,要找他的m3u8地址,那么可以根据fiddler来看到直播的m3u8地址,然后看这个地址里的一串字母,然后用find,在find里把match case,secrch binaries,decode compressed content,select matches,unmark old results等都点上,再查找,最后在之前页面返回响应的syntaxview选项卡里找到m3u8链接,之前因为没有在上面选decode,所以这里面是乱码。

Trunk、Hybrid、Access、Tag、Untag、Pvid

1、Trunk口,Trunk口上可以同时传送多个VLAN的包,一般用于交换机之间的链接。

2、Hybrid口,Hybrid口上可以同时传送多个VLAN的包,一般用于交换机之间的链接或交换机于服务器的链 接。

3、Access口,Access口只能属于1个VLAN,一般用于连接计算机的端口。

4、Tag和Untag,tag是指vlan的标签,即vlan的id,用于指名数据包属于那个vlan,untag指数据包不属于任何vlan,没有vlan标记。

5、PVID即 Port Vlan id,代表端口的缺省VLAN。交换机从对端设备收到的帧有可能是不带VLAN标签的数据帧,但所有以太网帧在交换机中都是以带VLAN标签的形式来被处理和转发的,因此交换机必须给端口收到的不带VLAN标签的数据帧添加上VLAN标签。为了实现此目的,必须为交换机配置端口的缺省VLAN。当该端口收到不带VLAN标签的数据帧时,交换机将给它加上该缺省VLAN的VLAN标签。通俗的讲,指的是native Vlan,即不打Vlan标记的Vlan,一般默认为Vlan 1

Port-base VLAN ID,是表示网络通信中基于端口的VLAN ID,一个端口可以属于多个VLAN,但是只能有一个PVID,收到一个不带tag头的数据包时,会打上PVID所表示的VLAN号,视同该VLAN的数据包处理。一个物理端口只能拥有一个PVID,当一个物理端口拥有了一个PVID的时候,必定会拥有和PVID相等的VID,而且在这个VID上,这个物理端口必定是Untagged Port。PVID的作用只是在交换机从外部接受到可以接受Untagged 数据帧的时候给数据帧添加TAG标记用的,在交换机内部转发数据的时候PVID不起任何作用。

二、端口的Tag和Untag

若某一端口在vlan设定中被指定为非标记端口untagged port, 所有从此端口转发出的数据包上都没有标记 (untagged)。若有标记的数据包进入交换机,则其经过非标记端口时,标记将被去除。因为目前众多设备并不支持标记数据包,其也无法识别标记数据包,因此,需要将与其连接的端口设定为非标记。

若某一端口在vlan设定中被指定为标记端口tagged port, 所有从此端口转发出的数据包上都将有标记 (tagged)。若有非标记的数据包进入交换机,则其经过标记端口时,标记将被加上。此时,其将使用在ingress 端口上的pvid设定作为增加的标记中的vlan id号。

三、端口的封装类型:ISL、802.1Q

ISL Trunk上所有的包都是tag的(Cisco专用);

802.1q 设计的时候为了兼容与不支持VLAN的交换机混合部署,特地设计成可以不tag:但是只有一个VLAN允许不tag,这样N个VLAN,(N-1)个都tag了,不tag的包一定是来自那个特殊VLAN的,所以不会乱套。(当然也可以所有VLAN都tag)

四、各端口收发数据的区别

端口类型收发描述
Access收报文判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则直接丢弃(缺省)
发报文将报文的VLAN信息剥离,直接发送出去
Trunk收报文收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有判断该trunk端口是否允许该 VLAN的数据进入:如果可以则转发,否则丢弃
发报文比较端口的PVID和将要发送报文的VLAN信息,如果两者相等则剥离VLAN信息,再发送,如果不相等则直接发送
Hybrid收报文收到一个报文判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则判断该hybrid端口是否允许该VLAN的数据进入:如果可以则转发,否则丢弃
发报文判断该VLAN在本端口的属性(disp interface 即可看到该端口对哪些VLAN是untag, 哪些VLAN是tag)如果是untag则剥离VLAN信息,再发送,如果是tag则直接发送

以下案例可以帮助大家深入理解华为交换机的hybrid端口模式

[Switch-Ethernet0/1]int e0/1

[Switch-Ethernet0/1]port link-type hybrid

[Switch-Ethernet0/1]port hybrid pvid vlan 10

[Switch-Ethernet0/1]port hybrid vlan 10 20 untagged

[Switch-Ethernet0/1] int e0/2

[Switch-Ethernet0/2]port link-type hybrid

[Switch-Ethernet0/2]port hybrid pvid vlan 20

[Switch-Ethernet0/2]port hybrid vlan 10 20 untagged

此时inter e0/1和inter e0/2下的所接的PC是可以互通的,但互通时数据所走的往返vlan是不同的。

以下以inter e0/1下的所接的pc1访问inter e0/2下的所接的pc2为例进行说明

pc1所发出的数据,由inter0/1所在的pvid vlan10封装vlan10的标记后送入交换机,交换机发现inter e0/2允许vlan 10的数据通过,于是数据被转发到inter e0/2上,由于inter e0/2上vlan 10是untagged的,于是交换机此时去除数据包上vlan10的标记,以普通包的形式发给pc2,此时pc1->p2走的是vlan10

再来分析pc2给pc1回包的过程,pc2所发出的数据,由inter0/2所在的pvid vlan20封装vlan20的标记后送入交换机,交换机发现inter e0/1允许vlan 20的数据通过,于是数据被转发到inter e0/1上,由于inter e0/1上vlan 20是untagged的,于是交换机此时去除数据包上vlan20的标记,以普通包的形式发给pc1,此时pc2->pc1走的是vlan20