0%
Win11配置大全
发表于:
分类于:
win11
Intel驱动安装
KMS激活
- https://github.com/Wind4/vlmcsd/tree/gh-pages
- https://learn.microsoft.com/zh-cn/windows-server/get-started/kms-client-activation-keys
- Windows
slmgr /upk slmgr /skms 192.168.1.1 slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX slmgr /ato
- Office 2019
cd "C:\Program Files\Microsoft Office\Office16" foreach ($x in Get-ChildItem ..\root\Licenses16\*_KMS*.xrm-ms -name) {cscript ospp.vbs /inslic:"..\root\Licenses16\$x"} cscript ospp.vbs /sethst:192.168.1.1 cscript ospp.vbs /inpkey:NMMKJ-6RK4F-KMJVX-8D9MJ-6MWKP cscript ospp.vbs /act slmgr /ato SKUID
VLAN
- 启用Windows功能
# 获取网卡信息
Get-NetAdapter
# 创建vSwitch
New-VMSwitch -name VLAN-vSwitch -NetAdapterName "Ethernet" -AllowManagementOS $true
# 创建vlan
Add-VMNetworkAdapter -ManagementOS -Name "<vlanName>" -SwitchName "VLAN-vSwitch" -Passthru | Set-VMNetworkAdapterVlan -Access -VlanId <vlanId>
Github CLI
发表于:
分类于:
devops
Workflow
# 删除已完成的actions/runs
export GH_TOKEN=
github_user=
github_repo=
ids=$(gh api -X GET -F per_page=100 /repos/${github_user}/${github_repo}/actions/runs --jq '.workflow_runs[] | select(.status=="completed") | .id' | xargs)
for t in $ids;do
echo "Delete: $t"
gh api -X DELETE /repos/${github_user}/${github_repo}/actions/runs/$t --silent
done
Git 命令大全
发表于:
分类于:
git
基础
git config --global http.proxy http://127.0.0.1:1081 #设置http代理
git config --global https.proxy https://127.0.0.1:1081 #设置https代理
git config --global http.proxy 'socks5://127.0.0.1:1081' #设置socks代理
git config --global https.proxy 'socks5://127.0.0.1:1081' #设置socks代理
git config --global core.autocrlf false #去除warning:LF will be replaced by CRLF警告
git rm -r --cached . #忽略文件不生效时使用并再次提交即可
git config --global user.name "<name>" #配置用户名
git config --global user.email "<email>" #配置邮箱
git config --system core.longpaths true # 允许长文件名
git checkout -b test <name of remote>/test # 创建本地分支并切换到远程分支
git daemon --reuseaddr --base-path=. --export-all --verbose --enable=receive-pack # 开启局域网访问 需cd到git工程根目录
git rev-list --all | xargs -rL1 git ls-tree -r --long | awk '{ size=$4/1024/1024; if (size >= 80) {print size" "$0}}' # 查找历史记录的文件大小大于80MB
删除指定文件所有历史记录
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch <filepath>" --prune-empty --tag-name-filter cat -- --all
git add .
git commit -m "<message>"
git push origin --all --force
替换敏感记录内容
# https://docs.github.com/zh/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository#purging-a-file-from-your-repositorys-history
bfg --replace-text passwords.txt
git add .
git commit -m "<message>"
git push origin --all --force
OpenWRT WireGuard 异地组网
发表于:
分类于:
openwrt
Linux 命令大全
用户
useradd -d /home/[user] -m [user] # 添加用户,并创建用户目录
adduser [user] # 添加用户
userdel -r [user] # 删除用户
usermod -G [group] [user] # 把用户从其他组中去掉,只属于该组
usermod -a -G [group] [user] #把用户添加至该组,之前所属组不影响
权限
# root用户下打开 /etc/sudoers 文件
# [user] ALL=NOPASSWD: ALL 某用户不需要密码可以执行sudo
# %[group] ALL=NOPASSWD: ALL 某组的所有用户不需要密码可执行sudo
#
# -rw------- (600) 只有拥有者有读写权限
# -rw-r--r-- (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限
# -rwx------ (700) 只有拥有者有读、写、执行权限
# -rwxr-xr-x (755) 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限
# -rwx--x--x (711) 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限
# -rw-rw-rw- (666) 所有用户都有文件读、写权限
# -rwxrwxrwx (777) 所有用户都有读、写、执行权限
chown -R [user]:[group] [filePath] # 更改文件拥有者及组
文件
tar --exclude=*.mp3 -zcvf file.tar.gz [filePath] # 过滤文件并压缩
tar -xzvf file.tar.gz -C [targetPath] # 解压缩至指定目录
ls -lR|grep "^-"|wc -l # 统计当前文件夹下文件的个数,包括子文件夹
ls -lR|grep "^d"|wc -l # 统计当前文件夹下目录的个数,包括子文件夹
ls -l |grep "^-"|wc -l # 统计当前文件夹下文件的个数
ls -l |grep "^d"|wc -l # 统计当前文件夹下目录的个数
ls -1 *.ts | sort -n | xargs cat > merged.ts # 按顺序合并文件到merged.ts
find . -type d -empty -delete # 删除空目录
find -type d -empty | xargs rmdir -p # 删除当前目录下所有空文件夹
find . -type f | grep '\./\.' | xargs rm -rf. # 删除以 ./.开头的文件
find temp/*201902* -not -name *20190214* | xargs rm -rf # 删除除某种条件下的文件
find . -type f -name *-compose.yml -exec sed -i -e '/./,$!d' -e :a -e '/^\n*$/{$d;N;ba' -e '}' {} \; # 去除开始与结尾空行 保留中间部分
find . -type f -name *-compose.yml -exec sed -i -e '$a\[plantext]' {} \; # 文本末尾批量追加
find . -type f -name 'init_config.sh' -exec sh -c 'f={};mv $f $(dirname $f)/init.sh' \; # 批量修改文件
find . -name "[file]" -exec grep -l '[hello]' {} \; | xargs rm -rf # 过滤文件+过滤内容+删除
find . -name "-*" -exec sh -c 'f={}; mv $f $(echo $f | sed 's/-//g')' \; # 正则修改文件名称
find . -type f -name values.yaml -size 0c -exec rm -rf {} \; # 批量删除空文件
find . -type f -exec sh -c 'f={};if echo $f | grep -q src ; then sed -i "s|com.learning|com.czy.learning|g" $f; fi;' \; # 修改匹配路径下的文件内容
find . -maxdepth 1 -type f -exec md5sum {} \; | sort | uniq -D -w 33 # md5 文件查重
find -name '*.gradle' -exec sed -i -e 's|compile|implementation|g' -e 's|testCompile|testImplementation|g' -e 's|runtime|implementation|g' {} \;
sed -i '1,nd' [file] # 删除前n行
sed -i -e 's/^INSERT INTO public\./INSERT INTO /' [file] # 正则替换
cat nginx.conf | grep -oP 'upstream \K\w.*?(?={)' | awk '{printf $1 ";"}' # 正则提取upsteam地址
# \$\{(\S+?)\} --------> \${\L$1} # 正则匹配括号内内容 并转为大小写(idea)
磁盘
du -hd0 . # 查看当前目录下总空间大小
du -hd1 # 查看当前目录及各目录的总空间大小
fdisk /dev/sdb n 初始化分区
mkfs.ext4 /dev/sdb1 格式化系统
Mount
- Disk
# get device name fdisk -l # get device uuid blkid /dev/sdb1 # disk in /etc/fstab /dev/disk/by-uuid/<uuid> /volume1 ext4 defaults 0 0
- NFS
# show nfs showmount -e [host] # nfs in /etc/fstab [host]:/volume1/ubuntu /volume1 nfs defaults 0 0 # nfs command line sudo mount -t nfs <nfs_server>:/<nfs_path> /<local_path>
- SMB
# smb in /etc/fstab //<host>/public/ubun12 /volume2 cifs user=<username>,pass=<password>,gid=1000,uid=1000 0 0 # smb command line sudo mount -t cifs //<smb_server>/<smb_path> /<local_path> -o "user=<username>,password=<password>,gid=1000,uid=1000"
系统
# set hostname
hostnamectl set-hostname --static [hostname]
ssh
scp -r [user]@[host]:/home/[user]/*[!.mp3] d:/upload/ # 从服务器下载文件
scp -r [local] [user]@[host]:[remote] # 本地上传文件至服务器
ssh [user]@[host] 'bash -s' < test.sh init # ssh运行加参数的本地脚本
ssh [user]@[host] < test.sh # ssh直接运行.sh脚本
ssh [user]@[host] 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub # 将本地公钥id_rsa.pub传给远程主机
rsync
# list remote module
rsync rsync://<host>
# -e "ssh -i <private_key_file>"
# push
rsync --progress -avogXH <local_path> rsync://<user>@<host>:<remote_path>
# pull
rsync --progress -avogXH rsync://<user>@<host>:<remote_path> <local_path>
docker
docker pull mysql:5.7
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7
docker exec -it pwc-mysql /usr/bin/bash (win10下 前面加上 wintpy)
docker stop $(docker ps -a -q) # 停止容器
docker rm $(docker ps -a -q) # 删除容器
docker image rm $(docker image ls -a -q) # 删除镜像
docker volume rm $(docker volume ls -q) # 删除数据卷
docker network rm $(docker network ls -q) # 删除 network
docker rm $(docker ps -q -f status=exited) # 删除 exited 容器
docker restart $(docker ps -aq --filter 'exited=0') # 重启 exited 容器
docker stop $(docker ps -a -q) && docker system prune --all --force # 全部清理
docker rm -f $(docker ps -a -q) && docker volume prune -y # 清空所有容器及数据卷
docker rm $(docker ps -qa --no-trunc --filter "status=exited") # 清空exited的容器
docker image prune -a # 清空未使用的镜像
docker ps -a --filter volume= # 根据volume name获取container
docker inspect <container_name> -f '{{ .LogPath }}' | xargs sudo cat # 查看容器日志文件
docker inspect <container_name> -f '{{ .LogPath }}' | xargs sudo tee # 清空容器日志文件
mac
# homebrew
export ALL_PROXY=socks5://127.0.0.1:1080
# mongo
brew install libpq
# mysql
brew install mysql-client
PVE 安装 硬件直通
发表于:
分类于:
pve
Remove subscription
- vim proxmoxlib.js
vim /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js /checked_command
checked_command: function(orig_cmd) { orig_cmd(); },
systemctl restart pveproxy.service
- CTRL+F5 Refresh Brower
Enable IOMMU
- AMD
sed 's|\(GRUB_CMDLINE_LINUX_DEFAULT\)=\(.*\)|\1="quiet amd_iommu=on iommu=pt"|' /etc/default/grub
- INTEL
sed 's|\(GRUB_CMDLINE_LINUX_DEFAULT\)=\(.*\)|\1="quiet intel_iommu=on iommu=pt"|' /etc/default/grub
update-grub
Kernel Modules
cat << EOF > /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
EOF
update-initramfs -u -k all
reboot
Verify
dmesg | grep iommu
# hav output is success
find /sys/kernel/iommu_groups/ -type l
GPU passthrough
- AMD
cat << EOF > /etc/modprobe.d/blacklist.conf blacklist radeon blacklist amdgpu EOF
- NVIDIA
cat << EOF > /etc/modprobe.d/blacklist.conf blacklist nouveau blacklist nvidia* EOF
Allow unsafe interrupt
echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf
Ignore vm exception
echo "options kvm ignore_msrs=1 report_ignored_msrs=0" > /etc/modprobe.d/kvm.conf
Set passthrough ids
# show pcie device
lspci -nn
# set passthrough ids
echo "options vfio-pci ids=xxxx:xxxx,yyyy:yyyy" > /etc/modprobe.d/vfio.conf
# verify
lspci -nnk
update-initramfs -u -k all
reboot
Disk passthrough
- RDM
ls -la /dev/disk/by-id/|grep -v dm|grep -v lvm|grep -v part
# type: scsi sata ide
# example: qm set <vmid> --scsi0 /dev/disk/by-id/xxxx
qm set <vmid> --<type><sequence> /dev/disk/by-id/xxxx
# delete passthrough
qm set <vmid> --delete scsi0
Reference
IPXE 无盘引导
IPXE编译(Ubuntu 22.04)
apt install gcc binutils make perl liblzma-dev mtools mkisofs syslinux
git clone git://git.ipxe.org/ipxe.git
cd ipxe/src
cat << EOF > script.ipxe
#!ipxe
dhcp
chain --autofree tftp://\${next-server}/boot.ipxe
#chain --autofree https://boot.netboot.xyz
EOF
- UEFI
git checkout config/general.h sed -i 's|#undef.*\(DOWNLOAD_PROTO_HTTPS\)|#define \1|' config/general.h make bin-x86_64-efi/ipxe.efi EMBED=script.ipxe
- BIOS
git checkout config/general.h sed -i 's|#undef.*\(DOWNLOAD_PROTO_HTTPS\)|#define \1|' config/general.h sed -i 's|\/\/#define.*\(IMAGE_COMBOOT\)|#define \1|' config/general.h make bin/undionly.kpxe EMBED=script.ipxe