首页
关于
友链
Search
1
ESXI 一些功能调整
560 阅读
2
天翼云网关3.0/4.0超管密码
514 阅读
3
SoftEther 客户端篇
483 阅读
4
SoftEther 服务端篇
388 阅读
5
Centos安装个人网盘Alist v3教程
347 阅读
默认分类
代码相关
vue
html
python
系统
数据库
docker
安卓
软件分享
杂七杂八的工具
游戏分享
游戏相关
我的家庭影院
Ai
登录
Search
标签搜索
python
esxi
git
SoftEther
linux
apscheduler
在线
rclone
飞牛
list
列表
idm
激活码
Charles
pdf
免安装
鲁大师
图片查看器
蜂蜜浏览器
honeyview
哥特式
累计撰写
106
篇文章
累计收到
15
条评论
首页
栏目
默认分类
代码相关
vue
html
python
系统
数据库
docker
安卓
软件分享
杂七杂八的工具
游戏分享
游戏相关
我的家庭影院
Ai
页面
关于
友链
搜索到
106
篇与
的结果
2024-05-23
gitlab的备份和迁移
创建备份数据docker exec -t gitlab-ee gitlab-rake gitlab:backup:create恢复备份数据docker exec -i -t gitlab-ee bashgitlab-rake gitlab:backup:restore BACKUP=/var/opt/gitlab/backups/1716450303_2024_05_23_17.0.1-ee
2024年05月23日
33 阅读
0 评论
0 点赞
2024-05-21
简单几步将Ubuntu 22.04 LTS升级到Ubuntu 24.04 LTS
简单几步将Ubuntu 22.04 LTS升级到Ubuntu 24.04 LTSUbuntu 24.04 LTS稳定版本(代号Noble Numbat )于2024年4月25日正式发布,如果你想知道其中的内容,现在可以从较低版本升级到该版本进行功能测试。就像每个新的Ubuntu版本一样,Ubuntu 24.04附带了最新功能,包括最新、最好的软件,例如Linux内核、GNOME 46和更新的工具链。想了解更多功能更新,可以从Ubuntu发行说明中找到有关更新内容。重要的是,Ubuntu 24.04 LTS将为Ubuntu Desktop、Ubuntu Server和Ubuntu Core提供为期5年的支持,也就是将会持续到2029年4月份。在本文当中,小编主要介绍如何将Ubuntu 22.04系统升级到最新Ubuntu 24.04 LTS,一起来看看注意的过程步骤吧!检查系统版本:lsb_release -a第1步:备份Ubuntu数据要在升级到Ubuntu 24.04之前,务必将Ubuntu 22.04上的数据备份到外部驱动器,可以按照以下几个步骤进行操作。首先,插入外部存储设备(例如USB驱动器或外部硬盘驱动器),并确保你的计算机可以识别它。打开终端并输入“ lsblk ”以在列表中查找你的外部驱动器,该驱动器可能类似于“/ dev/sdb1 ”。识别外部驱动器之后,可以通过运行df命令并在输出中查找与外部驱动器标识符(例如/dev/sdb1 )对应的条目来找到其挂载(mount)点。挂载点将列在该条目的第二列中,通常看起来像“ /mnt/external ”或“ /media/username/external ”。此挂载点是你的外部驱动器当前连接并可在系统中访问的位置。使用rsync命令将主目录备份到外部驱动器:rsync -av --progress /home/username /path/to/external/drive使用tar命令创建主目录的压缩存档并将其保存到外部驱动器:tar -cvzf /path/to/external/drive/backup_home.tar.gz /home/username注意:将/path/to/external/drive替换为外部驱动器的路径,将/home/username替换为主目录的路径。此外,你还可以使用Deja Dup或Timeshift等图形备份工具将数据备份到外部驱动器。选择适合自己的方式就行,不管选择哪种,只要能够备份好数据就行。第2步:准备Ubuntu系统升级在开始升级系统之前,确保需要任何更新非常重要。之后,更新并升级你当前的软件包。升级完成后,重新启动系统,以便所有更改都能正常工作。sudo apt list --upgradable sudo apt update && sudo apt upgrade -y reboot第三步:将 Ubuntu22.04 LTS升级到24.04 LTS如果通过SSH升级,请确保在ufw防火墙上打开TCP端口1022,以便在升级过程中保持稳定的连接:sudo ufw allow 1022/tcp如果你可以物理访问Ubuntu桌面并在本地升级,则无需打开任何端口,只需安装Update Manager Core工具,这将确保安装升级所需的所有工具:sudo apt install update-manager-core安装Update Manager Core之后,通过输入以下命令启动升级过程:sudo do-release-upgrade -d如果系统没有找到新版本,并且出现以下错误的话:Checking for a new Ubuntu release There is no development version of an LTS available. To upgrade to the latest non-LTS development release set Prompt=normal in /etc/update-manager/release-upgrades.出现此错误消息表明你正在尝试升级到不存在的Ubuntu LTS版本的开发版本。以下是发生的情况以及解决方法:Ubuntu版本有两种主要类型:LTS(长期支持)和非LTS(开发版本)。无法直接从LTS版本(例如22.04 LTS)升级到开发版本(当前不可用)。系统通知你当前LTS ( 24.04 LTS ) 尚无开发版本。由于你想从Ubuntu 22.04 LTS升级到最新的LTS版本 ( 24.04 LTS ),因此需要执行以下操作。打开/etc/update-manager/release-upgrades升级配置文件,并将“ Prompt ”的值更改为“ normal ”,这样可以确保你收到有关升级的通知,并可以选择是否继续。sudo nano /etc/update-manager/release-upgrades现在,使用以下命令再次启动升级过程:sudo do-release-upgrade这会将你带到Ubuntu 23.10版本,目前你无法使用do-release-upgrade命令直接从Ubuntu 22.04 LTS升级到24.04 LTS,因为官方升级路径尚不可用。所以,要升级到Ubuntu 24.04,必须先更新到Ubuntu 23.10。然后,可以从那里升级到Ubuntu 24.04。现在按照屏幕上的说明升级到Ubuntu 23.10版本并重新启动系统:reboot再次打开/etc/update-manager/release-upgrades升级配置文件,将“ Prompt ”的值更改为“ lts ”:sudo nano /etc/update-manager/release-upgrades最后输入以下命令,然后继续按照指南的其余部分从版本23.10升级到24.04 LTS:sudo do-release-upgrade -d第4步:删除过时的软件包要在升级Ubuntu后删除过时的软件包以确保系统清洁,可以使用以下命令:sudo apt autoremove运行上述命令将删除升级后系统不再需要的任何过时的软件包,这有助于释放磁盘空间并保持系统整洁和高效。第5步:在Ubuntu上启用第三方存储库要启用第三方存储库,需要在/etc/apt/sources.list.d/目录下找到在升级过程中可能已禁用的第三方存储库。接下来,取消注释并删除#相应文件中每个存储库每行开头的符号。通过运行以下命令确认第三方存储库已启用,以确保必要的存储库处于活动状态:ls -l /etc/apt/sources.list.d/通过执行这些步骤,你可以在从Ubuntu 22.04升级后在Ubuntu 24.04上成功启用第三方存储库。小结通过以下几个步骤就能够成功将Ubuntu版本从22.04升级到24.04,相对来说还是比较近简单的。需要注意的是,在升级之前,一定要做好备份工作。另外,Ubuntu 22.04无法直接升级,需要先升级到Ubuntu 23.10,然后从Ubuntu 23.10升级到Ubuntu 24.04。
2024年05月21日
41 阅读
0 评论
0 点赞
2024-05-11
Flask项目的一些封装
封装传入的参数main.py文件from base.views import asapi from flask import Flask, request, jsonify from flask_cors import CORS from base.views import ApiException as ex app = Flask(__name__) # CORS(app, resources={r"/*": {"origins": ["http://localhost:63343"]}}) CORS(app, resources={r"/*": {"origins": "*"}}) def checker1(param): # print("checker", param) return True @app.route("/test", methods=['get', 'post']) @asapi(checker=checker1) def test(param): return param if __name__ == '__main__': # en = Encipher() # res = en.getDatas({"1": "123"}) # print(res) # print(en.encode_data(res)) app.run( host="0.0.0.0", port=6003, debug=False )main.py文件下,新建一个base目录,创建文件views.py,写入下面内容from flask import request, jsonify from lxml.html.clean import clean_html import inspect class SiteException(Exception): def __init__(self, message=None, code=None): self.message = message self.code = code def to_json(self): pass def __str__(self): # return jsonify({"code": self.code, "msg": self.message}) return self.message class ApiException(SiteException): def __init__(self, message, code=1001): self.message = message self.code = code def to_json(self): return {"code": self.code, "msg": self.message} # return self.message def raiseApiEx(e, c=1001): raise ApiException(e, c) def asapi(a=None, checker=None): def param_handler(func): def wrapper(*args, **kwargs): def __func(**kvargs): try: req = kvargs.get("param") if checker and not checker(req): raiseApiEx('检查不通过') params = req datas = {} for k, v in list(params.items()): if v == 'undefined': # 排除JS值空 params[k] = '' for k in list(params.keys()): v = params[k] if isinstance(v, str) and '<' in v and '>' in v: lv = v.lower() if 'script' in lv or 'cookie' in lv: params[k] = clean_html(v) # arginfos = getattr(func, 'arginfos') arginfos = inspect.signature(func).parameters for param_name, param_info in arginfos.items(): if param_name != "param" and param_name not in params: params[param_name] = param_info.default if param_name == "param": datas['param'] = params elif param_info.default == inspect.Parameter.empty and param_name not in params: raise raiseApiEx(f"{func.__name__}缺少参数:{param_name}") else: datas[param_name] = params.get(param_name, param_info.default) res = func(**datas) return apiReaspone(en.getDatas(res)) except ApiException as e: return jsonify(e.to_json()) param = dict(request.values.items()) setattr(__func, 'checker', checker) kwargs.setdefault("param", param) # 在这里可以对参数进行处理,比如验证、转换等操作 # 将参数传递给路由处理函数 return __func(**kwargs) return wrapper return param_handler def apiReaspone(data): return jsonify({"code": 200, "data": data})
2024年05月11日
34 阅读
0 评论
0 点赞
2024-05-07
supervisor的安装和使用
安装pip install supervisor自定义服务配置文件echo_supervisord_conf > /etc/supervisord.conf配置文件的大概内容[unix_http_server] file=/tmp/supervisor.sock ; the path to the socket file ;chmod=0700 ; socket file mode (default 0700) ;chown=nobody:nogroup ; socket file uid:gid owner ;username=user ; default is no username (open server) ;password=123 ; default is no password (open server) [supervisord] logfile=/tmp/supervisord.log ; main log file; default $CWD/supervisord.log logfile_maxbytes=50MB ; max main logfile bytes b4 rotation; default 50MB logfile_backups=10 ; # of main logfile backups; 0 means none, default 10 loglevel=info ; log level; default info; others: debug,warn,trace pidfile=/tmp/supervisord.pid ; supervisord pidfile; default supervisord.pid [supervisorctl] serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket ;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket ;username=chris ; should be same as in [*_http_server] if set ;password=123 ; should be same as in [*_http_server] if set ;prompt=mysupervisor ; cmd line prompt (default "supervisor") ;history_file=~/.sc_history ; use readline history if available ;[program:theprogramname] ;command=/bin/cat ; the program (relative uses PATH, can take args) ;[group:thegroupname] ;programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions ;priority=999 ; the relative start priority (default 999) ;[include] ;files = relative/directory/*.ini对于上述配置参数,可以按照具体的需求进行自定义,大多数参数可以保持默认设置。但是为了方便多个项目的统一管理,需要启用 [include] 参数。该参数用于将指定文件包含到配置中,通过这种方式来 "扩展" 服务配置文件。创建配置目录,并修改 files 参数 :mkdir /etc/supervisord.d[include] files = /etc/supervisord.d/*.ini自定义应用配置文件假设现在有一个测试项目 (test),里面有个 test.py 脚本需要持久化运行。现在切换到项目目录 (/root/test),并按照以下格式创建应用配置文件。{porject_name}.ini配置项目的进程启动参数 :; /root/test/test.ini [program:test] command=python -u ./test.py ; 运行命令 directory=/root/test/ ; 运行目录 redirect_stderr=true ; 将 stderr 重定向到 stdout stdout_logfile=/root/test/test.log ; 日志文件输出路径 autorestart=true ; 用于控制是否在 supervisord 进程启动时同时启动 (默认为 true) startsecs=3 ; 是与自动重启相关的另一个配置参数。其作用是用于判断进程是否启动成功,只有当目标进程运行时间大于该配置时,才会判断成成功。 startretries=3 ; 参数需要与 startsecs 参数配合使用,用于控制目标进程的重启尝试次数,并且每次重试花费的时间间隔越来越长。可以通过以下代码测试一下: stdout_logfile=/supervisor/log/win_server.out.log ; 指定标准输出流的日志文件路径。 stderr_logfile=/supervisor/log/win_server.err.log ; 错误日志文件输出路径 stdout_logfile_maxbytes=2MB ; 单个日志文件的最大字节数,当超过该值时将对日志进行切分。 stderr_logfile_maxbytes=2MB ; 错误日志文件最大2MB user=root ; 使用什么用户运行 priority=999 ; 优先级,数值越小越先启动 numprocs=1 ; 用于指定运行时的进程实例数量,需要与 process_name 参数配合使用。 process_name=%(program_name)s_%(process_num)02d使用# 宝塔面板中: # 使用软链接链接到user/bin下面,这样可以在命令行直接使用 ln -s /www/server/panel/pyenv/bin/supervisorctl /usr/bin/supervisorctl # 进入到管理界面 supervisorctl # 查看所有子进程状态 status # 查看单个子进程的状态 status 子进程 # 关闭单个子进程 stop 子进程 # 关闭所有子进程 stop all # 启动单个子进程 start 子进程 # 启动所有子进程 start all # 重启单个子进程 restart 子进程
2024年05月07日
39 阅读
0 评论
0 点赞
2024-04-30
如何在 Debian 10 中配置 Chroot 环境的 SFTP 服务
如何在 Debian 10 中配置 Chroot 环境的 SFTP 服务SFTP 意思是“ 安全文件传输协议(Secure File Transfer Protocol)” 或 “ SSH 文件传输协议(SSH File Transfer Protocol)”,它是最常用的用于通过 ssh 将文件从本地系统安全地传输到远程服务器的方法,反之亦然。sftp 的主要优点是,除 openssh-server 之外,我们不需要安装任何额外的软件包,在大多数的 Linux 发行版中,openssh-server 软件包是默认安装的一部分。sftp 的另外一个好处是,我们可以允许用户使用 sftp ,而不允许使用 ssh 。当前发布的 Debian 10 代号为 ‘Buster’,在这篇文章中,我们将演示如何在 Debian 10 系统中在 “监狱式的” Chroot 环境中配置 sftp。在这里,Chroot 监狱式环境意味着,用户不能超出各自的家目录,或者用户不能从各自的家目录更改目录。下面实验的详细情况:OS = Debian 10IP 地址 = 192.168.56.151让我们跳转到 SFTP 配置步骤,步骤 1、使用 groupadd 命令给 sftp 创建一个组打开终端,使用下面的 groupadd 命令创建一个名为的 sftp_users 组:groupadd sftp_users步骤 2、添加用户到组 sftp_users 并设置权限假设你想创建新的用户,并且想添加该用户到 sftp_users 组中,那么运行下面的命令,useradd -m -G sftp_users <用户名> 让我们假设用户名是 jonathan:useradd -m -G sftp_users jonathan 使用下面的 chpasswd 命令设置密码:echo "jonathan:<输入密码>" | chpasswd 假设你想添加现有的用户到 sftp_users 组中,那么运行下面的 usermod 命令,让我们假设已经存在的用户名称是 chris:usermod -G sftp_users chris 现在设置用户所需的权限:chown root /home/jonathan /home/chris/ 在各用户的家目录中都创建一个上传目录,并设置正确地所有权:mkdir /home/jonathan/upload mkdir /home/chris/upload chown jonathan /home/jonathan/upload chown chris /home/chris/upload 注意: 像 Jonathan 和 Chris 之类的用户可以从他们的本地系统上传文件和目录。步骤 3、编辑 sftp 配置文件 /etc/ssh/sshd_config正如我们已经陈述的,sftp 操作是通过 ssh 完成的,所以它的配置文件是 /etc/ssh/sshd_config,在做任何更改前,我建议首先备份文件,然后再编辑该文件,接下来添加下面的内容:cp /etc/ssh/sshd_config /etc/ssh/sshd_config-org vim /etc/ssh/sshd_config ...... #Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp Match Group sftp_users ChrootDirectory /home/%u ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no ...... 保存并退出文件。为使上述更改生效,使用下面的 systemctl 命令来重新启动 ssh 服务:systemctl restart sshd 在上面的 sshd_config 文件中,我们已经注释掉了以 Subsystem 开头的行,并添加了新的条目 Subsystem sftp internal-sftp 和新的行。而Match Group sftp_users –> 它意味着如果用户是 sftp_users 组中的一员,那么将应用下面提到的规则到这个条目。ChrootDierctory %h –> 它意味着用户只能在他们自己各自的家目录中更改目录,而不能超出他们各自的家目录。或者换句话说,我们可以说用户是不允许更改目录的。他们将在他们的目录中获得监狱一样的环境,并且不能访问其他用户的目录和系统的目录。ForceCommand internal-sftp –> 它意味着用户仅被限制到只能使用 sftp 命令。步骤4、测试和验证sftpsftp -P ssh端口 username@ip
2024年04月30日
27 阅读
0 评论
0 点赞
2024-04-11
js将页面弄成pdf
// 使用html2pdf这个js,js公共cdn,https://staticfile.org/https://cdn.staticfile.net/html2pdf.js/0.10.1/html2pdf.bundle.js<script src="https://cdn.staticfile.net/html2pdf.js/0.10.1/html2pdf.bundle.js"></script> let url = "https://0.0.0.0" fetch(url) .then(response => response.text()) .then(data => { var element = document.createElement('div'); element.innerHTML = data; html2pdf(element, { margin: [1, 1, 1, 1], filename: sup.name + "-签署的协议.pdf", pagebreak: {mode: "avoid-all"}, jsPDF: { unit: 'in', format: 'letter', orientation: 'portrait' } }); console.log('PDF generated successfully'); }) .catch(error => { console.error('Error:', error); });
2024年04月11日
59 阅读
0 评论
0 点赞
2024-03-29
Esxi安装补丁
这里以8.0为例1. 下载补丁https://customerconnect.vmware.com/zh/patch2. 上传补丁到你的目录3.vmware -lv //查看版本 esxcli software sources profile list -d /vmfs/volumes/your path/esxi8.0/VMware-ESXi-8.0a-20842819-depot.zip esxcli software profile update -d /vmfs/volumes/your path/esxi8.0/VMware-ESXi-8.0a-20842819-depot.zip -p ESXi-8.0a-20842819-standard //-p 后面的版本就是上面那条命令显示的 如果有就可以升级没有就GG4. 报错集合# esxcli software vib install -d /vmfs/volumes/images/VMware/vSphere8/VMware-ESXi-8.0U1c-22088125-depot.zip [DependencyError] On platform embeddedEsx, VIB VMW_bootbank_vmkusb-nic-fling_1.11-1vmw.800.1.20.61054763 requires vmkapi_incompat_2_10_0_0, but the requirement cannot be satisfied within the ImageProfile. Please refer to the log file for more details.暂时删除 Fling 以升级 ESXiesxcli software vib remove -n vmkusb-nic-fling
2024年03月29日
143 阅读
0 评论
0 点赞
2024-03-28
linux生成密钥
一、首先需要在自己的本地生成ssh-key密钥1.1生成通过命令生成秘钥,创建文件具体参数看附录win+r(windows下)输入cmd,调出终端。执行命令:ssh-keygen -t ed25519 -C "我自己的密钥" -b 4096 -f H:\密钥文件\总的.pemGenerating public/private rsa key pair. //======> 存储路径 直接回车 使用默认路径,-f设置过就不会有这步 Enter file in which to save the key (/Users/bigmaning/.ssh/id_rsa): //======> 设置密码 直接回车 默认不设置密码 Enter passphrase (empty for no passphrase): //======> 确认密码 操作同上(直接回车 默认不设置密码) Enter same passphrase again: //======> 生成的密钥对的位置 Your identification has been saved in /Users/bigmaning/.ssh/id_rsa. Your public key has been saved in /Users/bigmaning/.ssh/id_rsa.pub.1.2命令之后,查看在本地生成的文件二、将用户下的.ssh目录中的总的.pem.pub公钥文件上传到服务器,或者也可打开此文件,直接复制内容到服务器上。2.1服务器中执行命令创建秘钥:执行命令如下:ssh-keygen -t ed25519 -C "我自己的密钥" -b 4096 -f /root/.ssh/总的.pem #/root/.ssh/总的.pem 表示存放生成文件的存放路径,可自定义路径 #/总的.pem 文件名称可以自定义 但必须以 .pem 结尾2.2 上传本地1.2生成的密钥文件到/root/.ssh里面2.3需将当前上传公钥中的值加入到授权列表(authorized_keys)中2.3.1如果没有authorized_keys这个文件就创建,命令:touch authorized_keys2.3.2 将总的.pem.pub文件中的内容添加到 新创建的 authorized_keys 文件中cat 总的.pem.pub>>authorized_keys 2.3.3 查看是否添加成功cat authorized_keysauthorized_keys 中保存的可以有N个,数据来源于不同用户在本地生成的xxx.pem.pub 中的key,同时,也可以将服务器中的生成的xxx.pem.pub的key放到另外一个服务器中的authorized_keys中 这样就可以实现linux服务互相连接了附录:ssh-keygen命令参数ssh-keygen [选项]-b:指定密钥长度;-e:读取openssh的私钥或者公钥文件;-C:添加注释; (一般设置为自己的邮箱)-f:指定用来保存密钥的文件名;-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;-l:显示公钥文件的指纹数据;-N:提供一个新密语;-P:提供(旧)密语;-q:静默模式;-t:指定要创建的密钥类型。 (常用参数)
2024年03月28日
79 阅读
0 评论
0 点赞
2024-03-19
青龙面板傻妞(sillyGirl)+go-cqhttp
1. 安装傻妞services: sillyplus: stdin_open: true tty: true volumes: # - ./data:/etc/sillyGirl - ./data1:/etc/sillyplus ports: - 你的端口:8080 container_name: sillyGirl restart: always image: jackytj/sillyplus # image: ingm23/sillygirl:1.1 # image: jessicayun/sillygirl:v1 2. 傻妞交互命令界面官方文档docker attach sillyGirl3. cq-http的安装和配置安装很简单,下载运行就行了,配置的话主要是反向ws方面傻妞要进到管理面板,安装插件OnebotV11(原内置QQ)# go-cqhttp 默认配置文件 account: # 账号相关 uin: 123456 # QQ账号 password: '' # 密码为空时使用扫码登录 encrypt: false # 是否开启密码加密 status: 0 # 在线状态 请参考 https://docs.go-cqhttp.org/guide/config.html#在线状态 relogin: # 重连设置 delay: 3 # 首次重连延迟, 单位秒 interval: 3 # 重连间隔 max-times: 0 # 最大重连次数, 0为无限制 # 连接服务列表 servers: # 添加方式,同一连接方式可添加多个,具体配置说明请查看文档 #- http: # http 通信 #- ws: # 正向 Websocket #- ws-reverse: # 反向 Websocket #- pprof: #性能分析服务器 - http: # HTTP 通信设置 address: 0.0.0.0:端口号 # HTTP监听地址 timeout: 5 # 反向 HTTP 超时时间, 单位秒,<5 时将被忽略 long-polling: # 长轮询拓展 enabled: false # 是否开启 max-queue-size: 2000 # 消息队列大小,0 表示不限制队列大小,谨慎使用 middlewares: <<: *default # 引用默认中间件 post: # 反向HTTP POST地址列表 #- url: '' # 地址 # secret: '' # 密钥 # max-retries: 3 # 最大重试,0 时禁用 # retries-interval: 1500 # 重试时间,单位毫秒,0 时立即 #- url: http://127.0.0.1:5701/ # 地址 # secret: '' # 密钥 # max-retries: 10 # 最大重试,0 时禁用 # retries-interval: 1000 # 重试时间,单位毫秒,0 时立即 # 反向WS设置 - ws-reverse: # 反向WS Universal 地址 # 注意 设置了此项地址后下面两项将会被忽略 universal: ws://127.0.0.1:傻妞的端口号/bot/onebotv11 # 反向WS API 地址 api: ws://your_websocket_api.server # 反向WS Event 地址 event: ws://your_websocket_event.server # 重连间隔 单位毫秒 reconnect-interval: 3000 middlewares: <<: *default # 引用默认中间件
2024年03月19日
120 阅读
0 评论
0 点赞
2024-03-13
pip使用教程
1. pip升级库# 查看当前电脑中所有可以升级的Python包 pip list --outdated # 安装pip-review包 pip install pip-review # 使用pip-review命令一次性更新所有过时的包 pip-review --local --interactive # 升级单个包 pip install --upgrade ** pip install --upgrade **
2024年03月13日
62 阅读
0 评论
0 点赞
2024-03-12
docker Jenkins使用
1. 安装version: '3.1' services: jenkins: restart: always image: jenkins/jenkins container_name: jenkins # network_mode: 'host' #与宿主机共享网络 mem_limit: 2g ports: # 发布端口 - 30011:8080 # 基于 JNLP 的 Jenkins 代理通过 TCP 端口 50000 与 Jenkins master 进行通信 - 50001:50000 environment: TZ: Asia/Shanghai # JENKINS_OPTS: "--httpPort=30011" volumes: - ./data:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock - /etc/docker/daemon.conf:/etc/docker/daemon.conf - /usr/bin/docker:/usr/bin/docker - ./env:/opt/env2. 报错信息jenkins unix:///var/run/docker.sock, cause: java.io.IOException: com.sun.jna解决方案:sudo chmod a+rw /var/run/docker.sock3. 邮箱配置需要管理员邮箱和你设置发送的邮箱一致
2024年03月12日
21 阅读
0 评论
0 点赞
2024-03-05
Ubuntu系统
1. 开启ipv6编辑ufw文件vi /etc/default/ufw如果IPV6为yes则为开启2. 设置网络信息编辑/etc/netplan/00-installer-config.yaml这个文件network: ethernets: ens160: #dhcp4: true addresses: - 192.168.*/24 nameservers: addresses: - 192.168.* - 192.168.* search: [] routes: - to: default via: 192.168.* version: 2 #renderer: networkd# 应用更改 netplan apply # 查看网关是否修改,第一行default via .... ip route show3. 设置时区dpkg-reconfigure tzdata4. 安装的时候网络选择
2024年03月05日
69 阅读
0 评论
0 点赞
2024-02-20
RSS订阅下载
1. RSS订阅这里使用acgnx为例,搜索关键字的时候用空格分开,使用多个条件看到是自己需要的资源后,右键这里的rss,复制链接到qb里面2. qb设置2.1 选择rss,粘贴刚刚复制的链接到这里,如果提示不可以用rss的话,需要设置一下,等会说2.2 tip:如果提示rss无法使用,需要到设置里面,启用rss订阅3. 自动下载回到刚刚qb--rss订阅那里,右边有一个rss下载,新建一个下载器,可以使用正则匹配文件名称,勾选保存到其他目录,之后就可以了,如果不会自动下载,回到2.2设置里面,启用rss下载4. 下载后重命名使用qb来完成,设置,下载,运行外部程序,勾选上“torrent 完成时运行外部程序”里面输入,具体的代码在配合qb一起使用的重命名工具python3 /EpisodeReName.py --path "%D" --delay 15 --overwrite 15. 自动刮削这里使用的是TMM来完成自动刮削,它支持cmd的方式调用,我这里使用的是Windows server的环境下运行,官方教程在这里,我用了两个来完成,一个是--scr*另一个是-n其他都一样C:\D\tinyMediaManagerV5\tinyMediaManagerCMD.exe tvshow -u --scrapeUnscraped -r创建一个bat文件,里面写入这些东西cmd /c "C:\D\tinyMediaManagerV5\tinyMediaManagerCMD.exe tvshow -u --scrapeUnscraped -r" cmd /c "C:\D\tinyMediaManagerV5\tinyMediaManagerCMD.exe tvshow -u -n -r"定时任务搜索任务计划程序右侧有一个创建任务从左往右分别是任务相关,触发器设置,执行的操作
2024年02月20日
68 阅读
0 评论
0 点赞
2024-02-01
可道云相关
1.缓存的切换想使用db1,但是发现配置页面没有,搜索论坛发现可以修改配置(更新1.44.04) 可以在配置中修改,config/setting_user.php$config['cache']['redis']['db'] = 1;
2024年02月01日
20 阅读
0 评论
0 点赞
2024-01-30
兰空图床本地上传文件,配合Typora使用
# -*- coding: utf-8 -*- # @Time : 2022-05-18 13:53 # @Author : GeTeShi # @File : test6.py import datetime import time import requests import redis import json import re import os import sys rdb = redis.StrictRedis(host='localhost', port=6379, decode_responses=True) NAME = "test" forever = 60 * 60 * 24 * 30 * 12 * 100 def get_cache(key, name=None): global NAME if name: NAME = name if rdb.hlen(name) and rdb.hexists(name, key): res = rdb.hget(NAME, key) try: res = json.loads(res) except json.decoder.JSONDecodeError: pass return res else: return False def get_cache_all_key(name): global NAME if name: NAME = name if rdb.hlen(name): return rdb.hkeys(name=name) def set_cache(key, content, timeout=60, name=None): global NAME if name: NAME = name if isinstance(content, dict): content = json.dumps(content) rdb.hset(NAME, key, content) rdb.expire(key, timeout) def del_cache(key, name=None): global NAME if name: NAME = name if rdb.hexists(name=name, key=key): rdb.hdel(name, key) def md5(s): import hashlib m2 = hashlib.md5() m2.update(s.encode("utf-8")) return m2.hexdigest() class image_upload(object): def __init__(self, email, password): self.URL = "https://你的图床的api" self.header = { "Accept": "application/json", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.54 ", } self.email = email self.password = password self.TOKEN_KEY = f"{self.email}_{md5(self.password)}_{datetime.datetime.strftime(datetime.datetime.now(), '%Y%m')}" self.sess = requests.Session() self.sess.get(url="https://你的图床的api") def get_requests(self, url, method, data=None, file=None): if not self.header.get('Authorization') and "tokens" not in url: header = self.header self.login() self.header.update(header) if method == "post": response = self.sess.post(url=url, data=data if data else "", headers=self.header) elif method == "get": response = self.sess.get(url=url, params=data if data else "", headers=self.header) elif method == "upload": response = self.sess.post(url=url, files=file, headers=self.header, data=data) else: response = self.sess.delete(url=url, headers=self.header) if response.status_code == 200: response.encoding = "utf-8" response = response.json() return response def get_token(self): self.header = {"Accept": "application/json"} token = self.get_requests(url=self.URL + "/tokens", method="post", data={ "email": self.email, "password": self.password }) if token: set_cache(self.TOKEN_KEY, token, timeout=60 * 60 * 24, name="upload-image") return token def upload(self, file): self.header.update({ "Accept": "multipart/form-data" }) filename = file.rsplit("\\", 1)[1].split(".")[0] filetype = file.rsplit("\\", 1)[1].split(".")[1] files = { "file": (f"{filename}.{filetype}", open(file, 'rb'), f"image/{filetype}"), } # 存储策略id,默认1 data = { "strategy_id": 1, } url = self.URL + "/upload" res = self.get_requests(url=url, method="upload", data=data, file=files) if res and res.get("status"): data = res.get('data') print(data.get('links').get('url')) return data.get('links').get('thumbnail_url') else: raise Exception(f"图片上传失败,失败原因:{res.get('message')}") def login(self): token = get_cache(self.TOKEN_KEY, name="upload-image") if (not token) or (not token.get('data') or not token.get('data').get('token')): token = self.get_token() # token = get_cache(self.TOKEN_KEY, name="upload-image") url = self.URL + "/profile" # print(token.get('data')) self.header.update({ "Authorization": "Bearer " + token.get('data').get('token'), "Accept": "application/json" }) self.get_requests(url=url, data="", method="get") def main(self): pass def clear(self): self.get_requests(url=self.URL + "/tokens", data="", method="delete") self.header = {} return "已清空tokens" def get_strategies(self): """获取存储策略""" res = self.get_requests(url=self.URL + "/strategies", method="get") print(res) if __name__ == '__main__': images = sys.argv[1:] for image in images: image_upload(email="你的用户名", password="你的密码").upload(file=image)
2024年01月30日
37 阅读
0 评论
0 点赞
1
2
3
4
...
8