Mac m2自动登陆跳板机脚本
需求需求很简单,通过脚本自动登陆跳板机。因为最近换的是mac M2,然后碰到了一堆问题。
问题从intel芯片换到m2出现很多问题。首先mac m2 没有python2,默认是python3,所以脚本的命令要调整成python3相关的。然后是 ssh 登陆,原来正常可以登陆方式也有问题,默认的ssh密钥失效,需要替换成新的密钥。就导致原来的免密登陆也失效了,添加了公钥,依然需要输密码,下面的脚本,有一段是补偿输入密码的操作,如果不需要,可以删了输密码的部份。
自动登陆脚本需要准备两个脚本:
login.sh, shell 脚本
jump.python, python3脚本
1234567891011121314#!/bin/shexpect -c "set pwd you_pass_wordspawn ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa test@10.10.10.10set timeout 2expect "*assword:*"send \&quo ...
GLIBCXX_3.4.20 not found 问题解决
前因最近在编译leveldb时,碰到一个问题:GLIBCXX_3.4.20 not found,这个提示已经比较明显了,是本地缺少重要的二进制LIB库文件。
本地的二进制文件一般在/usr/lib64下面,因为我使用的是64位系统。
处理查看本地系统的 GLIBCXX_版本
1strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
结果:
123456789101112131415161718192021GLIBCXX_3.4GLIBCXX_3.4.1GLIBCXX_3.4.2GLIBCXX_3.4.3GLIBCXX_3.4.4GLIBCXX_3.4.5GLIBCXX_3.4.6GLIBCXX_3.4.7GLIBCXX_3.4.8GLIBCXX_3.4.9GLIBCXX_3.4.10GLIBCXX_3.4.11GLIBCXX_3.4.12GLIBCXX_3.4.13GLIBCXX_3.4.14GLIBCXX_3.4.15GLIBCXX_3.4.16GLIBCXX_3.4.17GLIBCXX_3.4.18GLIBCXX_3.4.19GLIBCX ...
shell 错误日志告警脚本
背景服务器有敏感数据,不允许直接登陆服务器查看日志文件,也不允许使用如ELK等日志功能收集日志,所以只能使用最简单的办法,只将错误日志进行收集,然后通过应用的webhook进行收集。
思路两种思路:
周期轮询
实时抓取
周期轮询每隔一分钟去抓取一次,错误日志的内容上送webhook。这样的好处是不会抓到过多的错误日志,但是也有个问题,有可能会错过关键的错误日志。假如每一分钟一轮询,这一次查询刚好没有错误日志产生,而这一个轮询时刻的一分钟内产生了错误日志,就会错过。
如果到到轮询时刻去统计这一分钟到上一分钟之间的错误日志,是可以,但是如果错误在轮询完成后的这一刻发生,需要等到一分钟之后才会告警出来,缺乏实时性,如果对实时性要求不高可以使用这种方式。
实时抓取这个思路很简单,就是实时抓取ERROR日志,有ERROR就推送webhook。实现思路:
使用 tail 查询日志
倒序获取第一条
关键字可指定
过滤关键字
下面这个脚本实现以上的几个思路,算是一种简单的实现,我一直觉得脚本这东西不要写的太复杂,需要考虑后面的人维护的成本。另外脚本尽量使用python而不是shell,pyth ...
linux-CentOS8 arm64架构 使用Centos8打包报错 No URLs in mirrorlis
起因最近在为应用打包 arm64架构应用环境的docker包。基于:
Linux aarch64 aarch64 aarch64 GNU/Linux
基础镜象使用 CentOS8,过包过程中报错。
报错虽说 CentOS8 已经不维护了,但是很多项目还是基于CentoOS8构建。使用阿里云基于CentOS8构建 CentOS8 镜像构建过程中报错:
#5 5.239 CentOS Linux 8 - AppStream 8.9 B/s | 38 B 00:04#5 5.241 Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
原因在 Dockerfile 中使用到了yum 进行安装。阿里云官方给出解释:
CentOS 8操作系统版本结束了生命周期(EOL),Linux社区已不再维护该操作系统版本。建议您切换到Anolis或Ali ...
vim-插件10-代码注释插件nerdcommenter
前言作用:对代码进行注释,NERD_commenter插件需要VIM7.0以上版本。
12# 可查看该符号的说明文档:help <Leader>
命令\cc 中的斜杠:\ 为<Leader>符,<Leader>也就是常说的Leader键在.vimrc中添加let mapleader = ","可将<Leader>符变为,或者其实键。
安装注释插件 NERD_commenter通过Plug插件进行安装。
1Plug 'scrooloose/nerdcommenter'
然后执行
1:PlugInstall
就可以安装完成。
使用注释主要就两个操作:\cc 注释当前行和选中行\cu 取消注释
这个插件包括 html 也可以注释有用的就这两个,其它大同小异。
其他注释
操作
说明
\cn
没有发现和\cc有区别
\c<空格>
如果被选区域有部分被注释,则对被选区域执行取消注释操作,其它情况执行反转注释操作
\cm
对被选区域用一对注释符进行注释,前面的注释对每一行都会 ...
vim-IDE进化09 tagbar
tagbar 作用实现函数之前的跳转,看下效果图,右侧那部分就是:
右侧的列表就是ctags的显示的中间代码部分的函数列表,选择对应的函数,就可以在源码中进行跳转。
tagbar 安装添加插件部份,使用Plug安装就比较简单的,把下面部份的代码复制到~/.config/nviminit.vim下面,执行安装
:PlugInstall
1234567891011121314151617" 展示当前文件的一些函数" 查看当前代码文件中的变量和函数列表的插件," 可以切换和跳转到代码中对应的变量和函数的位置" 大纲式导航, Go 需要 https://github.com/jstemmer/gotags 支持Plug 'majutsushi/tagbar'" =================================" tagbar" =================================" 将tagbar的开关按键设置为 F5nnoremap <silent& ...
vim-IDE进化08-ranger文件管理
这又是一个非常好用的插件,可以快速的浏览本地文件打开本地文件。如果是不同类型的文件如pdf,会调用本地系统的应用打开,就是这么好用,在习惯了vim后有个毛病,就是想要什么都可能通过命令行去操作,如果你也是这样,那这个插件非常适合你。
老规距,先上效果图
安装需要先安装到系统中,首次安装不需要初始化也能使用,但是会比较丑,也没有预览功能,所以安装完成后,需要一些配置。
验证安装效果
brew install ranger
iterm2插件mac 我使用的是 iter2 来使用nvim,所以能不能预览需要iterm2的支持,iterm2官方可以支持。添加图片插件
curl https://iterm2.com/utilities/imgcat > imgcatchmod +x imgcatmv imgcat /usr/local/bin
这步是装上iterm2的图片预览插件,还需要配置 ranger 的预览功能。
初始化如何果不初始化将没有图片预览、边框等。
生成配置
ranger --copy-config=all
~/.config/ranger 目录生成以下5个文件: ...
vim-IDE进化07-fzf搜索文件
前言之前已经介绍过了ctrlp这个工具为什么还需要fzf这个工具。因为这两者在使用方式上有一些区别。fzf是可以直接在mac的终端上使用,并且还能够集成到vim当中使用。
官网https://github.com/junegunn/fzf
FZF的Vim插件:
https://github.com/junegunn/fzf.vim
安装fzf 这个工具,本身是mac下就可以使用的一个功能,而vim是可以调用外部应用来使用的。所以需要新安装 fzf,再安装 vim 插件端。
fzf 本机安装必须先安装,vim才能调用该插件。
123git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf~/.fzf/installsource ~/.zshrc
验证一下效果:
直接在 iterm2 下输入:fzf,就可以打开
1fzf
control-j 和 control-k 上移和下移
带预览
1fzf --preview 'cat {}'
使用这个工具完全可以代替find这个工具。 ...
vim-IDE进化06-模糊搜索ctrlpvim
模糊搜索工具有很多,但是推荐装一下这个工具,这个工具是一个很好用的工具,而且如果你使用go开发中话,vim-go的跳转了依赖于这个工具,所以推荐装该插件。
安装
Plug 'ctrlpvim/ctrlp.vim'
操作普通模式下输入
control + p
直接在键盘上输入就可以进行模糊匹配,无需过多的配置。上下选择
control + j / k
查看最近使用
:CtrlPMRUFiles
一般使用的时候只需要记住常用的几个操作的,更多的操作,通过提示或者帮助来了解,我一般都用提示功能,输入:CtrlP 然后 table
查看说明每个vim的完整功能几乎都可以在说明文档中找到完整说明。
:help ctrlp.txt
总结到这里 vim 已经具备了搜索功能,可以在 vim 的界面中,直接搜索文档,直接打开编辑,不用先进到目录再去打开文档。对于文本编辑来说又进一步的方便了操作。
完整配置123456789101112131415161718192021222324252627282930313233343536373839404142434445 ...
vim-IDE进化 05 vim-startify
效果今天介绍一下vim的别一个非常好用的插件,启动界面插件 vim-startify。这个插件有什么用呢,看效果:
中间是最近打开的文件,可能通过数字快数打开文件,界面可以设置找开和关闭。
安装配置1.vim插件安装123call plug#begin('~/.vim/plugged')Plug 'mhinz/vim-startify'call plug#end()
2.配置配置不是必须项目,当然一般情况下,都会习惯自己一的快捷键。另外书签功能是个很好用的功能,把常用的文件直接加入书签,如果书签加入是个目录,也安装了ranger 插件,可以直接调用 ranger 这个插件。
1234567891011121314151617181920212223242526272829303132333435363738394041"=========================================" Startify 设置"=========================================&q ...