Linux/Unix
发布专属环境SHELL脚本
[ 2023/10/13 17:06 | by 刘新修 ]
C#代码
- #ifconfig
- echo $projectPath
- echo $developer
- echo $rebuildBranch
- ### 获取最后一层的项目名称
- las_dir=$(basename "$projectPath")
- ### 提取上一层目录的全路径
- cur_dir=$(dirname $projectPath)
- ### 获取业务线的名称第二层
- pat_dir=$(basename "$cur_dir")
- echo $las_dir
- echo $cur_dir
- echo $pat_dir
- ### 通用前端发布脚本( 从本地同步来取 dist.tar.gz 文件包 ) ###
- wwwroot=/data/apps/nginx/htdocs/public/frontend$projectPath &&
- cd $wwwroot && pwd && git fetch && git checkout dev-$developer &&
- git pull origin dev-$developer &&
- bash /sh/downdist.sh /data/apps/nginx/htdocs/public/frontend$projectPath/upload/dynamicAssets.json /data/apps/nginx/htdocs/public/tarfile/XXX/$developer$projectPath http://dl.ktm1234.com/XXX/$developer$projectPath
- ### 通用前端发布脚本( 从本地同步来取 dist.tar.gz 文件包 ) ###
- wwwroot=/data/apps/nginx/htdocs/public/frontend$projectPath &&
- cd $wwwroot && pwd
- if [[ $rebuildBranch == true ]] ;then
- echo '---- 全新构建分支 ------'
- git checkout . && git checkout master &&
- git branch -D dev-$developer && git fetch &&
- git checkout -b dev-$developer origin/dev-$developer &&
- bash /sh/downdist.sh /data/apps/nginx/htdocs/public/frontend$projectPath/upload/dynamicAssets.json /data/apps/nginx/htdocs/public/tarfile/XXX/$developer$projectPath http://dl.ktm1234.com/XXX/$developer$projectPath
- else
- echo '---- 更新新版本 ------'
- git fetch && git checkout dev-$developer &&
- git checkout . && git pull origin dev-$developer &&
- bash /sh/downdist.sh /data/apps/nginx/htdocs/public/frontend$projectPath/upload/dynamicAssets.json /data/apps/nginx/htdocs/public/tarfile/XXX/$developer$projectPath http://dl.ktm1234.com/XXX/$developer$projectPath
- fi
shell(bash)替换字符串大全
[ 2023/08/16 11:13 | by 刘新修 ]
1. 替换(只替换一个)
C#代码
- $ var="AAAszip_BBB.zip";var2=${var/zip/ZIP};echo $var2};
- AAAsZIP_BBB.zip
- $ var="AAAszip_BBB.zip";var2=${var/.zip/.ZIP};echo $var2;
- AAAszip_BBB.ZIP
2. 替换(替换所有)
C#代码
- $ var="AAAszip_BBB.zip";var2=${var//zip/ZIP};echo $var2;
- AAAsZIP_BBB.ZIP
3. 替换(替换开头一个)
C#代码
- $ var=".zipAAAszip_BBB.zip_CCC";var2=${var/#.zip/.ZIP};echo $var2;
- .ZIPAAAszip_BBB.zip_CCC
4. 替换(替换结尾一个)
C#代码
- $ var="AAAszip_BBB.zip_CCC.zip";var2=${var/%.zip/.ZIP};echo $var2;
- AAAszip_BBB.zip_CCC.ZIP
5. 截取,删除右边,保留左边,从右起最短匹配
C#代码
- $ a="aaa=bbb";b=${a%=*};echo $b
- aaa
- $ a="http://localhost:3000/china/shanghai.html";b=${a%/*};echo $b
- http://localhost:3000/china
6. 截取,删除右边,保留左边,从右起最长匹配
C#代码
- $ a="http://localhost:3000/china/shanghai.html";b=${a%%/*};echo $b
- http:
7. 截取,删除左边,保留右边,从左起最短匹配
C#代码
- $ a="aaa=bbb";b=${a#*=};echo $b
- bbb
- $ a="http://localhost:3000/china/shanghai.html";b=${a#*/};echo $b
- /localhost:3000/china/shanghai.html
8. 截取,删除左边,保留右边,从左起最长匹配
C#代码
- $ a="http://localhost:3000/china/shanghai.html";b=${a##*/};echo $b
- shanghai.html
SHELL替换字符串内容
[ 2023/08/11 17:22 | by 刘新修 ]
C#代码
- //http://dl.ktm1234.com/injured/work-litigation/
- //http://dl.ktm1234.com/XXX/jiaye/injured/work-litigation/
- var="http://dl.ktm1234.com/injured/work-litigation/";var2=${var//com/com\/XXX\/jiaye};echo $var2;
结果:http://dl.ktm1234.com/XXX/jiaye/injured/work-litigation/
Linux shell命令 批量删除子目录下的文件,保留指定数量的最新文件
[ 2023/07/26 16:26 | by 刘新修 ]
C#代码
- #!/bin/bash
- #保留文件数
- ReservedNum=2
- #要删除文件的,父级目录
- FileDir=/usr/docker/springCloud/project/
- #循环子目录列表
- for element in `ls $FileDir`
- do
- # 拼接成完成目录 (父目录路径/子目录名)
- dir_or_file=$FileDir$element
- # 获取子目录下的指定文件格式的总数量
- FileNum=$(ls -l $dir_or_file | grep 'keda-' |wc -l)
- # 输出 删除前的 指定格式的文件数量
- echo $element "jar num:" $FileNum
- # 如果 数量大于保留数量,那就循环删除 文件
- while(( $FileNum > $ReservedNum))
- do
- OldFile=$(ls -rt $dir_or_file | grep 'keda-'| head -1)
- echo $element "Delete jar:"$OldFile
- rm -rf $dir_or_file/$OldFile
- let "FileNum--"
- done
- done
- # 删除完后,再循环输出一下 每个子目录下的文件数量
- for element in `ls $FileDir`
- do
- dir_or_file=$FileDir$element
- FileNum=$(ls -l $dir_or_file | grep 'keda-' |wc -l)
- echo $element "jar num:" $FileNum
- done
SHELL 获取目录
C#代码
- ### 提取目录中的名称
- las_dir=$(basename "$PWD")
- cur_dir=$(dirname $(pwd))
- lat_dir=$(basename "$cur_dir")
docker容器备份成镜像结合定时器自动执行
[ 2023/06/03 11:34 | by 刘新修 ]
C#代码
- ### 把docker容器提交成新的镜像
- cd /data/backup
- ### 备份Jenkins容器
- docker commit -a "Jesse Liu" -m "v20230602" jenkins-rsync-v2 jenkins-rsync:v2b
- docker save -o jenkins-rsync-v2b.tar jenkins-rsync:v2b
- ### 备份Nginx容器
- docker commit -a "Jesse Liu" -m "v20230602" nginx-nodejs-redis-v2 nginx-nodejs-redis:v2b
- docker save -o nginx-nodejs-redis-v2b.tar nginx-nodejs-redis:v2b
- docker commit -a "Jesse Liu" -m "v20230602" jenkins-rsync-v2 jenkins-rsync:v2b
- docker save -o jenkins-rsync-v2b.tar jenkins-rsync:v2b
- docker commit -a "Jesse Liu" -m "v20230602" nginx-nodejs-redis-v2 nginx-nodejs-redis:v2b
- docker save -o nginx-nodejs-redis-v2b.tar nginx-nodejs-redis:v2b
- ### SHELL脚本依次压缩导出tgz文件
- cd /data/backup &&
- rm -rf jenkins-rsync-v2b.tgz &&
- rm -rf nginx-nodejs-redis-v2b.tgz &&
- docker rmi jenkins-rsync:v2b &&
- docker rmi nginx-nodejs-redis:v2b &&
- docker commit -a "Jesse Liu" -m "v20230602" jenkins-rsync-v2 jenkins-rsync:v2b &&
- docker image save jenkins-rsync:v2b > jenkins-rsync-v2b.tgz &&
- docker commit -a "Jesse Liu" -m "v20230602" nginx-nodejs-redis-v2 nginx-nodejs-redis:v2b &&
- docker image save nginx-nodejs-redis:v2b > nginx-nodejs-redis-v2b.tgz
- ### SHELL脚本依次解压导入docker镜像
- docker image load -i jenkins-rsync-v2b.tgz
- docker image load -i nginx-nodejs-redis-v2b.tgz
- ### 编辑和查看定时器配置
- crontab -e
- crontab -l
- 每星期六的晚上11 : 00 pm重启smb
- 0 23 * * 6 /etc/init.d/smb restart
- 每天的0:30重启smb
- 30 0 * * * /etc/init.d/smb restart
- 30 0 * * * root /sh/docker-backup.sh
- 一分钟执行一次
- */1 * * * * root /sh/test.sh
- */1 * * * * root /sh/test.sh
- ### 重启定时器服务
- chmod 755 /sh/test.sh
- chmod 755 /sh/docker-backup.sh
- chmod 755 /sh/scp-docker.sh
- systemctl restart crond
### 本地机器生成密钥
ssh-keygen -t rsa
[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:PeMmQH0e2HL+jxZjYJ6/8Hej+ANJ06gm+sUIhzCLNho root@localhost
The key's randomart image is:
+---[RSA 3072]----+
| |
| . o |
| o . + = o |
| . +.. Bo= . |
|E+ . o..SoOoo |
|o.. ooo+o*+ |
|. ..+o+ooo |
| . .o o++...|
| .. o==+..|
+----[SHA256]-----+
[root@localhost ~]#
进入主机A ~/.ssh/ 目录,会发现生成了一对密钥
Your identification has been saved in /home/test/.ssh/id_rsa.
Your public key has been saved in /home/test/.ssh/id_rsa.pub.
### A将公钥文件中的内容复制到 ==> 远程服务器端B
~/.ssh/id_rsa.pub
~/.ssh/authorized_keys
## 步骤如下
[root@localhost .ssh]# pwd
/root/.ssh
[root@localhost .ssh]# ll
total 12
-rw------- 1 root root 891 Jun 1 14:52 id_rsa
-rw-r--r-- 1 root root 228 Jun 1 14:52 id_rsa.pub
-rw-r--r-- 1 root root 172 Jun 1 22:28 known_hosts
[root@localhost .ssh]# vi /root/.ssh/authorized_keys
### 粘贴id_rsa.pub内的字符串到这个文件,对于OpenSSH来说,我们需要将公钥加入到~/.ssh/authorized_keys中。每个公钥一行,千万注意不要换行,否则可能不能正常工作。
### 修改文件权限
chmod 600 /root/.ssh/authorized_keys
### 修改/etc/ssh/sshd_config 文件
修改/etc/ssh/sshd_config 文件,将RSAAuthentication 和 PubkeyAuthentication 后面的值都改成yes
将PasswordAuthentication yes 修改成 PasswordAuthentication no
### 重启SSHD
/etc/init.d/sshd restart
rsync 常用的同步命令
[ 2023/06/03 11:12 | by 刘新修 ]
C++代码
- ### 由本地向服务器推送
- rsync -avz --port=8730 dist.tar.gz liuxinxiu@127.0.0.1::test
- rsync -avzP --port=8730 dist.tar.gz dynamicAssets.json jenkins@172.16.207.22::work-litigation
- ### 由服务器向本地下载
- rsync -avz liuxinxiu@127.0.0.1::test /test/111
- rsync -avz jenkins@172.16.207.22::work-litigation /var/www/html/mirrors/frontend/injured/work-litigation
- ### 创建软连接(前边是存储源——后边是软链接)
- ln -s /data/apps/rsync/www/release /data/apps/nginx/htdocs/release
以下是具体是例子:
C#代码
- ### 由本地向服务器推送
- cd /data/apps/nginx/htdocs/$projectPath/upload
- rsync -avzP --port=8730 dist.tar.gz dynamicAssets.json jenkins@172.16.207.22::$las_dir
- ### 由本地向服务器推送
- cd /data/apps/nginx/htdocs/$projectPath/upload
- rsync -avzP --port=8730 dist.tar.gz dynamicAssets.json jenkins@172.16.207.22::release/$projectPath &&
- cd /data/apps/rsync/www/release/$lat_dir &&
- scp -r $pat_dir root@10.10.9.99:/var/www/html/mirrors/frontend/$pat_dir &&
- curl http://10.10.9.99/frontend/$projectPath
[Linux] 解决secureCRT 登录 Rocky Linux 9.1 报错 No compatible hostkey. The server supports these methods: rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519
[ 2022/11/28 15:18 | by 刘新修 ]
C#代码
- Key exchange failed. No compatible key exchange method. The server supports these methods: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512
- No compatible hostkey. The server supports these methods: rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519
1、通过web管理终端登录系统
编辑/etc/ssh/sshd_config
在最下面新增
C#代码
- KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1,curve25519-sha256@libssh.org
Rocky Linux-8.6 Docker安装
[ 2022/11/28 08:27 | by 刘新修 ]
C#代码
- yum install -y yum-utils device-mapper-persistent-data lvm2
- yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- yum install docker-ce -y --allowerasing
- systemctl start docker
- systemctl enable docker