自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

运维@小兵的博客

技术改变世界!

  • 博客(368)
  • 资源 (6)
  • 收藏
  • 关注

原创 Linux神兵利器—sed命令详解

文章目录一、概述二、sed基本指令`2.1.sed语法格式``2.2.命令选项``2.3.基本操作指令``2.4.sed支持的数据定位方法``2.5.示例`p指令直接使用行号匹配使用正则表达式匹配使用=指令显示行号使用感叹号(!)对匹配的条件取反a指令和i指令c指令d指令s指令,替换r指令,从文件中读取数据w指令,将匹配的数据写入到新文件中q指令,退出sed编写多条指令-f选项,读取指令文件三、sed高级指令`3.1.示例`g、h、x指令n指令y指令标签功能Branch无条件跳转test有条件跳转参考

2021-06-12 19:00:57 45

原创 xargs命令详解

概述xargs可以读取标准输入和管道中的数据,用于弥补有些命令(如echo、kill、rm)不能从管道中读取数据的不足。使用echo,输出结果为空,因为它不能从管道中读取数据不指定程序时xargs默认会将数据传递给echo,上面的命令等价于cut -d: -f1 /etc/passwd | xargs echo选项-0(数字零)xargs默认以空格、Tab制表符、回车符为分隔符和结束符,当有的文件本身包含空格时,就会出问题xargs会把’hello world.txt’识别为两个文件

2021-06-11 17:07:20 4

转载 Shell实现进度条效果

#!/bin/bash#功能描述(Description):为拷贝文件设计一个进度条效果.#防止提前执行Ctrl+C后无法结束进度条.trap 'kill $!' INT#定义变量,存储指针的四个符号.rotate='|/-\'#定义函数:实现动态指针进度条.bar() {#回车到下一行打印一个空格,第一次打印指针符号时会把这个空格删除.#这里的空格主要目的是换行. printf ' ' while : do#删除前一个字符后,仅打印rotate变量中的第一

2021-06-11 16:34:11 1

原创 printf命令详解

概述printf命令可以实现格式化输出示例printf支持%进行格式控制,%s代表输出字符,实际数据有多少就输出多少%10s指定输出宽度为10[root@localhost ~]# printf '%10s' devops #指定宽度10,宽度不够在左边补空格 devops[root@localhost ~]# printf '%3s' devops #实际数据宽度大于3,正常显示devops[root@localhost ~]# printf '%.3s' devops #仅显示实际

2021-06-11 16:29:23

原创 curl上传本地文件到网站上

之前用Groovy搞了半天没搞定,谁知用curl一条命令就解决,Linux命令太强大了curl -v -F tiFile=@/tmp/test.tar https://IP/API接口 -i --insecure -H "X-Auth-Token: 实际token值" -H "Descrip:test"/tmp/test.tar代表要上传文件的绝对路径采用的是token认证方式-H后面接请求头部信息,多个头部信息用-H隔开指定...

2021-06-06 22:23:51 8

原创 docker容器网络

网络命名空间为了支持网络协议栈的多个实例,Linux在网络栈中引入了网络命名空间。处于不同命名空间中的网络栈是完全隔离的,彼此之间无法通信,就好像两个“平行宇宙”通过对网络资源的隔离,就能在一个宿主机上虚拟多个不同的网络环境网络命名空间的操作ip netns add ns1 #创建命名空间ns1ip netns list #列出命名空间ip netns exec ns1 ifconfig #在命名空间中执行命名,此时没有任何网络设备ip netns exec ns

2021-06-03 11:25:06 15

原创 groovy处理yaml文件

host.yamlDB: type: mysql hostIP: 192.168.1.2脚本#!groovy//读取yaml文件,转换为一个对象def datas = readYaml file: '/etc/ansible/host.yaml'println datasprintln "数据库IP是${datas.DB.hostIP}" //读取yaml文件中的值//修改yaml文件的值,不能直接写到原有的文件,需删除旧文件sh "rm -rf /etc/ansi

2021-05-30 22:49:55 20

原创 Shell脚本安装Docker(二进制版)

#!/bin/bash# vim:sw=4:ts=4:et<<INFOAUTHOR:运维@小兵<邮箱号>DATE:2021-01-26DESCRIBE:1、二进制方式安装/卸载Docker,可以指定数据盘作为Docker的存储盘 2、如果本地没有Docker二进制包会去官网下载,需确保网络可用SYSTEM:CentOS7/RedHat7WARNING:MODIFY:INFOset -eWORKDIR=$(cd `dirname $0`;pwd)LOG_

2021-05-30 09:37:31 46 4

原创 Linux 源码安装postgresql

文章目录一、下载源码包二、安装依赖包三、创建用户四、编译安装五、定义环境变量并初始化数据库`1.定义环境变量``2.初始化数据库`六、启动postgresql七、登陆postgresql八、配置开机自启动参考文章:https://www.cnblogs.com/tigergaonotes/p/11083322.html一、下载源码包官网:https://www.postgresql.org/二、安装依赖包yum -y gcc gcc-c++ cmake readline-devel perl z

2021-05-29 21:36:21 34 1

原创 Python之多进程编程

一个简单的例子代码#!/usr/bin/python# -*- coding:utf-8 -*-import osprint('Starting...')os.fork()print('Hello World!')执行结果可以看到打印了两次“Hello World!”,另一个是fork出来的子进程打印的fork流程图os.fork的返回值是数字,这个数字在父进程中是非零值(子进程的PID),子进程中是0。修改代码,打印os.fork的返回值输出结果在父进程中,os.

2021-05-25 15:26:42 8

原创 k8s指定私有镜像仓库

一、docker login 镜像仓库地址(如192.168.1.200:5000)登陆成功会生成~/.docker/config.json这个文件,里面会记录登陆镜像仓库的认证信息二、将config.json转换成base64编码 cat ~/.docker/config.json|base64 -w 0三、编写registrykey-myhub.yml配置文件apiVersion: v1kind: Secretmetadata: name: registrykey-myhub na

2021-05-24 19:03:24 80

原创 Linux shopt命令详解

文章目录一、常用属性及功能二、示例`2.1.开启自动纠错``2.2.checkhash`参考书籍:《Linux Shell核心编程指南》——丁明一一、常用属性及功能使用shopt命令可以查看支持的属性及是否开启的标志shop -s开启属性shopt -u关闭属性二、示例2.1.开启自动纠错[root@localhost shell]# cd /ect #拼写错误,命令无法执行-bash: cd: /ect: 没有那个文件或目录[root@localhost shell]# sh

2021-05-23 22:27:11 73

原创 Shell生成随机数

文章目录一、使用命令生成二、使用设备文件生成三、通过Hash值生成随机数据四、使用进程号生成随机数参考书籍:《Linux Shell核心编程指南》——丁明一一、使用命令生成[root@localhost ~]# uuidgen #生成16进制随机字符串0a7beba9-cb04-4ca0-b303-7a3094e180b7[root@localhost ~]# date +%s #1970-1-1到当前的秒数1621759272[root@localhost ~]# openssl ra

2021-05-23 16:48:01 35

原创 Python基于WSGI实现一个简单的WEB网页

代码from wsgiref.simple_server import make_serverdef simple_app(environ, start_response): status = '200 OK' headers = [('Content-type', 'text/plain; charset=utf-8')] start_response(status, headers) html = '<h1>Hello World</h1>'

2021-05-23 14:54:56 100

原创 shell脚本批量修改远程主机密码

#!/bin/bash<<INFOSCRIPYT:modify_pwd.shAUTHOR:运维@小兵DATE:2020-11-14DESCRIBE:批量修改远程主机root密码SYSTEM:CentOS7/RedHat7WARNING:1.密码中不能有"$"符号 2.执行脚本的机器与远程主机网络通 3.远程主机原始密码需一致MODIFY:INFO######################定义变量######################USERNAME="r

2021-05-23 14:52:37 15

原创 Shell八大扩展详解

一、花括号{}注意:花括号不可以被引号引用echo {a..h}echo {1..9}echo {1..9..2} #1到9,步长为2mkdir -p test/{aa,bb}cp /etc/hosts{,.bak} #利用扩展,备份文件mv /etc/hosts.bak{,hosts_bak} #重命名二、波浪号~波浪号在Shell脚本中默认代表当前用户的家目录echo ~ #显示当前用户的家目录ls ~devops #查看devops用户的家目录~+表示当前

2021-05-18 22:56:30 80

原创 git常用命令

常用配置git config --global user.name "root"git config --global user.email "root@163.com"git config credential.helper store #保存待会输入的用户名和密码,避免每次都要输入git config --global http.sslVerify false #跳过SSL验证git credential-manager uninstall #解决Windows提交代码弹出登录g

2021-05-18 21:02:28 22

原创 脚本式pipeline指定在执行机上运行

#!groovytimestamps{ try{ node(agent_1){ println "xxxx" }//node() node(agent_2){ println "yyyy" }//node() }//try catch(Exception err) { throw new Exception("*******Caught an exception: ${err}") }}agent_1和agent_2为执

2021-05-16 20:16:29 17

原创 groovy提取时间戳

def time=new Date().format('yyyyMMddHHmmss')println time

2021-05-15 14:18:10 86

原创 shell字符串处理,解决传入参数有空格的问题

一、以下划线作为分隔符,把元素存入数组,并遍历数组脚本内容#!/bin/basharr=a_b_carray=(${arr//_/ }) #把'_'替换为空,并从此处分隔for((i=0;i<${#array[@]};i++))do echo ${array[i]}done输出结果二、当待处理的字符串中出现空格时会出问题修改arr的值arr="name1,image:tag,docker run --name t1 image_name2,image:tag,do

2021-05-14 22:22:42 101

原创 shell多进程并发导入docker镜像

初级版不足之处:当镜像较多时,会同时启动几百个进程,会突然增大服务器的负载,容易导致系统瞬间崩溃for image in $(ls *.tar)do docker load -i $image &donewaitwait命令后如果以进程号作为参数,则等待该进程结束并返回其状态值。如果没有指定任何参数,则会等待当前shell激活的所有的子进程结束,返回状态为最后一个进程的退出状态。中高级版通过文件描述符和命名管道来控制每次并发的进程数量.下面是每次导入10个镜像#!/bin/b

2021-05-12 21:24:41 62

原创 Groovy入门必备

文章目录一、Win10安装groovy环境`1.打开groovy自带的编辑器`二、数值和表达式`1.整数运算符``2.混合运算``3.赋值`第一次使用变量,需要用def去声明变量变量被称作标识符,标识符命名规则三、字符串和正则表达式`1.字符串索引``2.基本操作``3.正则表达式`四、列表、映射和范围`1.列表`列表方法遍历列表以逗号分隔,存到列表中把列表元素拼接成字符串`2.映射(类似Python的字典)`映射方法`3.范围`包含范围的示例范围方法五、基本输入输出`1.基本输出``2.格式化输出``3.

2021-05-11 20:57:24 32 2

原创 VScode常用设置

文章目录一、修改默认主题二、自动换行三、ssh连接到远程主机`3.1.安装Remote-SSH插件``3.2.创建一个远程连接``3.3.连接远程主机`三、修改默认删除行的快捷键为Ctrl+D一、修改默认主题Ctrl+k+T选择一个自己喜欢的主题即可二、自动换行[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9ZLHMHC9-1620660580947)(_v_images/20210510232726105_16255.png)]在搜索框输入:WordWra

2021-05-10 23:30:15 43

原创 源码编译mosquitto cannot stat ‘mosquitto.8‘: No such file or directory

源码安装mosquitto cannot stat ‘mosquitto.8‘: No such file or directory源码编译安装mosquitto,执行make install报如下错误原因:没有把libwebsockets的头文件和库文件的路径添加到环境变量libwebsockets的头文件和库文件路径在编译安装的时候能够看到解决cat >> /etc/profile << EOFexport WEBSOCKET_HEADER=/usr/local/i

2021-05-06 22:02:15 63

原创 shell脚本配置DNS

#!/bin/bash#设置DNS[[ $# -ne 2 ]] && echo "ERROR:Invalid Param,Please Excute:bash $0 url dns_ip" && exit 1URL=$1DNS_IP=$2http_code=$(curl -k -m 3 -s -o /dev/null -w %{http_code} ${URL})if ! echo ${http_code} | egrep '^[234]' &>

2021-05-01 22:39:18 43

原创 Docker Swarm修改服务映射的端口

创建/删除服务docker network create -d overlay tomcat_netdocker service create --replicas 1 --network tomcat_net --name my_tomcat -p 80:8080 tomcat:v1.0 #默认PublishMode为ingress或者docker service create --network tomcat_net --name my_tomcat --publish mode=host,t

2021-04-27 20:49:40 159

原创 Shell通过递归求阶乘

#!/bin/bash#Function:求阶乘Func(){ x=$1 if [[ ${x} -eq 1 ]];then echo "1" else echo "$[$x * $(Func $[$x-1])]" fi}result=$(Func $1)echo "$1的阶乘是:${result}"

2021-04-26 22:23:31 30

原创 set命令详解

一、set -e说明"Exit immediately if a simple command exits with a non-zero status."也就是说,在"set -e"之后出现的代码,一旦出现了返回值非零,整个脚本就会立即退出。示例#!/bin/bashset -els a.txt | echo "hi" >/dev/nullecho $?echo "test"执行结果:没有a.txt文件,但是ls a.txt | echo “hi” >/dev/n

2021-04-21 21:35:15 40

转载 Shell部署LNMP环境

参考书籍:《Linux Shell核心编程指南》——丁明一#!/bin/bash#功能描述(Description):一键部署LNMP环境.#执行脚本时需要在当前目录下有:nginx-1.14.2.tar.gz,mysql-boost-8.0.13.tar.gz,php-7.3.0.tar.gz.#设置各种显示消息的颜色属性.SETCOLOR_SUCCESS="echo -en \\033[1;32m"SETCOLOR_FAILURE="echo -en \\033[1;31m"SETCOL

2021-04-20 22:28:46 24

原创 Linux管道详解

文章目录一、概念二、匿名管道三、命名管道`3.1.特征``3.2.示例`参考书籍:《Linux Shell核心编程指南》——丁明一一、概念管道是进程间通信的一种方式。分为匿名管道和命名管道二、匿名管道这个最常用,使用|符号就可以创建一个匿名管道。例如:cat /etc/hosts | grep 127.0.0.1匿名管道仅可以实现父进程与子进程之间的数据交换,要想实现任意两个无关的进程之间的通信,需要使用命名管道。三、命名管道命名管道也叫FIFO文件,即First In Firs

2021-04-14 21:41:52 55

原创 Linux文件描述符详解

文章目录一、概念二、手动创建文件描述符`2.1.语法`2.1.1.创建2.1.2.调用2.1.3.关闭`2.2.重定向输出的文件描述符``2.3.重定向输入的文件描述符``2.4.既可以输出又可以输入的文件描述符`三、使用read命令读取文件描述符参考书籍:《Linux Shell核心编程指南》——丁明一一、概念文件描述符是一个非负整数,内核需要通过这个文件描述符才可以访问文件文件描述符好比一本书的目录(索引),通过这个索引可以找到需要的内容在Linux系统中内核默认为每个进程创建三个标准的文

2021-04-12 23:10:08 61

原创 解决k8s Error registering network: failed to acquire lease: node “master“ pod cidr not assigne

部署flannel网络插件时发现flannel一直处于CrashLoopBackOff状态,查看日志提示没有分配cidr解决vim /etc/kubernetes/manifests/kube-controller-manager.yaml增加参数:--allocate-node-cidrs=true--cluster-cidr=10.244.0.0/16systemctl restart kubelet...

2021-04-09 21:18:37 271

原创 shell编程注意事项

不能把函数名管道给tee下面这种写法是有问题的func | tee -a install.log当func函数中的退出码为非0时,整个脚本的退出码等于tee -a install.log的退出码,因此为0

2021-04-09 21:08:18 23

原创 获取Django项目的绝对路径

一、介绍项目名:K8sSdkpython脚本:k8s.py脚本所在路径目的:在k8s.py中获取K8sSDK项目所在的绝对路径二、k8s.py代码import settingsprint(settings.BASE_DIR)三、效果四、为什么导入settings模块可以得到当前项目的绝对路径?其一:从第一张图可以发现settings.py与k8s.py在同一级目录,因此是直接import settings其二:在settings.py中有如下代码,正是获取Django项目的绝对

2021-03-21 13:28:38 221

转载 shell脚本统计分析Nginx日志

#!/bin/bash#功能描述(Description):Nginx标准日志分析脚本.#统计信息包括:#1.页面访问量PV#2.用户量UV#3.人均访问量#4.每个IP的访问次数#5.HTTP状态码统计#6.累计页面字节流量#7.热点数据GREEN_COL='\033[32m'NONE_COL='\033[0m'line='echo ++++++++++++++++++++++++++++++++++'read -p "请输入日志文件:" logfileecho#统计页

2021-03-15 21:07:16 35

转载 Django登录认证装饰器

代码from django.shortcuts import redirect#登录认证装饰器def self_login_request(func): def inner(request, *args, **kwargs): is_login = request.session.get('is_login', False) if is_login: return func(request, *args, **kwargs)

2021-03-14 10:18:55 98

原创 Groovy的httpRequest GET方法 URL用$filter过滤提示illegal character错误

匹配年龄等于18的字段错误的写法:url = “http://ip/api/$filter=age eq 18”正确的写法:url = “http://ip/api/$filter=age%20eq%2018”PS:空格要用%20代替

2021-03-12 22:12:35 22

转载 Python之K8S API接口大全

文章目录环境准备`安装python相关模块`Kubernetes API使用`API是什么?``K8s认证方式`HTTPS证书认证(kubeconfig)HTTP Token认证(ServiceAccount)获取Token字符串python调用`其他常用资源接口类实例化:``示例`操作Deployment操作Service`HTTP API`使用token使用证书环境准备安装python相关模块pip3 install kubernetesKubernetes API使用API是什么?A

2021-03-06 11:53:42 355

转载 通过curl命令访问K8s API

使用tokentoken="eyJhbGciOiJSUzI1NiIsI..."curl --cacert /etc/kubernetes/pki/ca.crt -H "Authorization: Bearer $token" https://192.168.31.61:6443/api/v1/namespaces/default/pods使用证书curl https://192.168.31.61:6443/api/v1/nodes \--cacert /etc/kubernetes/pki

2021-03-06 11:25:21 214

转载 Python通过K8s API实现对K8S集群的访问认证

文章目录一、环境准备`1.1.安装python相关模块`二、Kubernetes API使用`2.1.API是什么?``2.2.K8s认证方式`1、HTTPS证书认证(kubeconfig)2、HTTP Token认证(ServiceAccount)获取Token字符串拷贝ca证书到python脚本所在的目录python调用3、用户名+密码的方式认证基本不用参考视频:https://ke.qq.com/course/320021一、环境准备1.1.安装python相关模块pip3 install

2021-03-06 11:09:31 292

Python-3.6.7.tgz

python3.6.7源码包 tar xzf Python-3.6.7.tar.gz cd Python-3.6.7 ./configure --prefix=/usr/local make && make install

2019-11-03

电脑、电子类常见英文缩写

这是我总结的关于计算机和电子类的专业英文缩写词汇,希望能对大家有所帮助,如有不正确的地方,还望赐教!

2012-12-18

centos_7.2官方源.tgz

centos_7.2官方源,centos_7.2官方源

2019-12-05

电脑问题解决

这是我在日常生活中遇到的一些电脑问题,总结了一下解决方法,希望对大家有所帮助

2012-07-12

电脑可以登QQ、酷狗,但不能进网页问题解决

电脑可以登QQ、酷狗,但不能进网页问题解决

2012-11-06

如何修复桌面快捷方式

当你中病毒后桌面所有的东西都变成了快捷方式,就来试试我的方法吧,祝你成功!

2012-12-01

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除