Python logging

Example 1

import logging

LOG_FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
logging.basicConfig(format=LOG_FORMAT)

logger.info('info log')
logger.error('error log')
logger.warn('warn log')
logger.debug('debug log')

Example 2

import logging

LOG_FORMAT = '%(asctime)s %(clientip)-15s %(user)-8s %(message)s'
logging.basicConfig(format=LOG_FORMAT)

logger = logging.getLogger('tcpserver')
logger.warning('Protocol problem: %s', 'connection reset', extra=d)

Example3

import logging
# create logger
logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)

# create console handler and set level to debug
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)

# create formatter
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# add formatter to ch
ch.setFormatter(formatter)

# add ch to logger
logger.addHandler(ch)

# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warning('warn message')
logger.error('error message')
logger.critical('critical message')

 

References:

https://baijiahao.baidu.com/s?id=1663188765325528537&wfr=spider&for=pc

.

发表在 python | Python logging已关闭评论

Python 国内镜像

国内镜像清单

  • 清华:https://pypi.tuna.tsinghua.edu.cn/simple
  • 阿里云:http://mirrors.aliyun.com/pypi/simple/
  • 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
  • 华中理工大学:http://pypi.hustunique.com/
  • 山东理工大学:http://pypi.sdutlinux.org/
  • 豆瓣:http://pypi.douban.com/simple/

临时修改

pip3 install 库名 -i 镜像地址

例:从清华这边的镜像去安装pyspider库。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspider

永久修改

touch ~/.pip/pip.conf
vi ~/.pip/pip.conf
[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=pypi.tuna.tsinghua.edu.cn

mkdir ~/.pip/
echo '' > ~/.pip/pip.conf
echo '[global]' >> ~/.pip/pip.conf
echo 'index-url = https://pypi.tuna.tsinghua.edu.cn/simple' >> ~/.pip/pip.conf
echo '[install]' >> ~/.pip/pip.conf
echo 'trusted-host=pypi.tuna.tsinghua.edu.cn' >> ~/.pip/pip.conf
echo '' >> ~/.pip/pip.conf

 


清华参考:https://mirror.tuna.tsinghua.edu.cn/help/pypi/

临时使用

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

注意,simple 不能少, 是 https 而不是 http

设为默认

升级 pip 到最新的版本 (>=10.0.0) 后进行配置:

pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

如果您到 pip 默认源的网络连接较差,临时使用本镜像站来升级 pip:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U

 

 

。。。

发表在 python | Python 国内镜像已关闭评论

密码保护:三维空间距离/失量/向量/夹角算法

此内容受密码保护。如需查阅,请在下列字段中输入您的密码。

发表在 info, space | 密码保护:三维空间距离/失量/向量/夹角算法已关闭评论

密码保护:角度与弧度转换

此内容受密码保护。如需查阅,请在下列字段中输入您的密码。

发表在 info, space | 密码保护:角度与弧度转换已关闭评论

Python3环境搭建

linux环境

查看是否已安装python版本:

python -V

一般系统会自带安装python2的,yum等其他软件会用到

查看系统自带安装的python2的位置

whereis python

找到python2的可执行脚本位置,安装好python3,需要创建软连接到对应位置

查看并安装python3依赖,如果已经安装的话就不用再安装了

rpm -qa zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel

下载python3安装包

wget -P /usr/local https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz

安装配置python3

切换到安装包目录:cd /usr/local/
解压:tar -xJvf Python-3.6.5.tar.xz 或者 xz Python-3.6.5.tar.xz tar -xvf Python-3.6.5.tar
切换到解压目录:cd Python-3.6.5
编译安装python:

./configure prefix=/usr/local/python3

make && make install

创建软连接:

ln ./python3/bin/python3 /usr/bin/python3

ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

测试:python3 -V 显示Python 3.6.5 安装完成
————————————————

windows10

  1. 至 https://registry.npmmirror.com/binary.html?path=python/ 下载
    python-x.x.x-embed-amd64.zip
  2. 添加 环境变量 python 与 python/Scripts
  3. 执行python -V 显示 Python 3.7.1  OK绿色版python3安装成功
  4. 安装pip
    1. 打开cmd切换到python3安装目录
    2. 编辑python37._pth文件添加 Lib\site-packages 如下图所示:
    3. 注:官网是通过get-pip.py这个文件安装的,如果不想配置python37._pth这个文件。也可以把对应目录下的模块拷贝到python37._pth这个文件配置的目录下,否则执行pip的时候会报找不到模块的错误。
    4. 下载get-pip.py
      https://bootstrap.pypa.io/get-pip.py
      在cmd下运行python get-pip.py
      运行 pip 出现以下错误,则是因没有执行 B 编辑 python37._pth添加 Lib\site-packages 操作导致:

      Traceback (most recent call last):
      File "D:\obj\windows-release\37amd64_Release\msi_python\zip_amd64\runpy.py", line 193, in _run_module_as_main
      File "D:\obj\windows-release\37amd64_Release\msi_python\zip_amd64\runpy.py", line 85, in run_code
      File "C:\python37\Scripts\pip.exe_main
      .py", line 5, in <module>
      ModuleNotFoundError: No module named 'pip'

 

==============================================

本文将python版本升级到python3.9.0版本

第一步:安装相关依赖包和编译环境

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel gcc

(注意:这一步很重要,如果不安装相关依赖包,在使用pip安装python包时会报找不到SSL错误!)

第二步:下载python3.9.0安装包

wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tar.xz

第三步:解压安装包并创建安装目录

xz -d Python-3.9.0.tar.xz

tar -xvf Python-3.9.0.tar

mkdir /usr/local/python3.9.0

第四步:编译安装

cd Python-3.9.0

./configure --with-ssl --prefix=/usr/local/python3.9.0

(注意:prefix后面配置第三步中创建的路径,且等号两边不能有空格,不然会报错)

make && make install

第五步:创建python3.6.5软链接

ln -s /usr/local/python3.9.0/bin/python3.9 /usr/bin/python3

ln -s /usr/local/python3.9.0/bin/pip3.9 /usr/bin/pip3

升级pip3
python3 -m pip install --upgrade pip

 

...

 

 

 

 

发表在 python | Python3环境搭建已关闭评论

密码保护:空间目标轨道计算

此内容受密码保护。如需查阅,请在下列字段中输入您的密码。

发表在 space | 密码保护:空间目标轨道计算已关闭评论

航天器轨道根数/两行根数的定义/TLE

开普勒元素通常以两行元素的格式发布。

它们有时被称为" TLEs " " Keps "

解释1:

解释2:

序号 含义 说明和备注
0.1 01 目标名称 包含最多24个字符的字符串
1.1 01 行号 取值1
1.2 03-07 卫星编目号 5位十进制数表示,最多可编目99999个目标
1.3 08 卫星密级分类标识 U表示非秘,S表示秘密(秘密目标根数不公开
1.4 10-11  

 

卫星国际编号

发射年份,2位十进制数表示,如03代表2003年
1.5 12-14 年中序号,3位十进制数表示,如111表示当年的第111次发射
1.6 15-17 本次发射中产生的目标序列,字符表示,如C表示本次发射中形成的第三个目标
1.7 19-20  

根数历元时刻

年份,2位十进制数表示,如03代表2003年
1.8 21-32 天数,年中的天数(年积日),小数点后保留8位有效数字(精确到1ms)
1.9 34-43 平运动一阶变率(1/2) 单位为圈数/天
1.10 45-52 平运动二阶变率(1/6) 单位为圈数/天,前6位为小数部分,后2位为指数部分,如-12345-6表示-0.12345×10
1.11 54-61 表示大气阻力的弹道系数:B*(=0.5CdS/M) 单位为地球赤道半径的倒数,表示方法同1.10
1.12 63 定轨模型类型 内部使用,现在设为0,用SGP4和SDP4
1.13 65-68 根数组数
1.14 69 检验位
2.1 01 行号 取值2
2.2 03-07 卫星编目号 同1.2
2.3 09-16 轨道倾角 单位:度,小数点后4位
2.4 18-25 轨道升交点赤经 单位:度,小数点后4位
2.5 27-33 轨道偏心率 小数表示(1234567表示0.1234567),7位有效数字
2.6 35-42 近地点辐角 单位:度,小数点后4位
2.7 44-51 平近点角 单位:度,小数点后4位
2.8 53-63 平运动速度 单位:圈/天
2.9 64-68 相对于历元的圈数 单位:圈,发射后首次过升交点为第一圈,
2.10 69 校验位

一组两行根数的例子:

DIAPASON (D1-A)
1  2016U 66013A   22040.47656371  .00000563  00000-0  15717-3 0  9990
2  2016  34.0968 195.3317 1186353 282.6277  64.4483 12.60172085539087
STARLINK-2452
1 48115U 21027Z   22040.12425648  .00004640  00000-0  33007-3 0  9991
2 48115  53.0563   8.5382 0001476  82.0419 278.0737 15.06410135 47642

....

参考:

美国两行根数的定义


Data for each satellite consists of three lines in the following format:

AAAAAAAAAAA
1 NNNNNU NNNNNAAA NNNNN.NNNNNNNN +.NNNNNNNN +NNNNN-N +NNNNN-N N NNNNN
2 NNNNN NNN.NNNN NNN.NNNN NNNNNNN NNN.NNNN NNN.NNNN NN.NNNNNNNNNNNNNN

Line1:

Column     Description
01-01     Line Number of Element Data
03-07     Satellite Number
10-11     International Designator (Last two digits of launch year)
12-14     International Designator (Launch number of the year)
15-17     International Designator (Piece of launch)
19-20     Epoch Year (Last two digits of year)
21-32     Epoch (Day number and fractional portion of the day)
34-43     First Time Derivative of the Mean Motion divided by 2.
       or Ballistic Coefficient (Depending of ephemeris type)
45-52     Second Time Derivative of Mean Motion divided by 6. 
(Blank if N/A)
54-61     BSTAR drag term if GP4 general perturbation theory was used.
          Otherwise, radiation pressure coefficient.
63-63     Ephemeris type
65-68     Element number
69-69     Check Sum (Modulo 10)

Line2:

Column     Description
01-01     Line Number of Element Data
03-07     Satellite Number
09-16     Inclination [Degrees]
18-25     Right Ascension of the Ascending Node [Degrees]
27-33     Eccentricity (decimal point assumed)
35-42     Argument of Perigee [Degrees]
44-51     Mean Anomaly [Degrees]
53-63     Mean Motion [Revs per day]
64-68     Revolution number at epoch [Revs]
69-69     Check Sum (Modulo 10)

.

 

发表在 aero, space | 航天器轨道根数/两行根数的定义/TLE已关闭评论

Docker 国内仓库和镜像

Docker 国内仓库和镜像

由于网络原因,我们在pull Image 时,从Docker Hub下载会很慢。
可使用一些国内的镜像(docker hub mirror)增加速度。

1. 镜像

镜像一:Docker官方

https://registry.docker-cn.com

https://registry.docker-cn.com

镜像二:网易

http://hub-mirror.c.163.com
镜像三:USTC
https://docker.mirrors.ustc.edu.cn

2.配置(配置文件)

/etc/docker/daemon.json

{
"registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn" ]
}

3.配置(启动文件)

#修改 /usr/lib/systemd/system/docker.service 启动脚本
vim /usr/lib/systemd/system/docker.service 
# 在dockerd后面加参数
ExecStart=/usr/bin/dockerd --registry-mirror=<your accelerate address>

4.Docker 重启

sudo systemctl daemon-reload
sudo systemctl restart docker
--
发表在 technologys | Docker 国内仓库和镜像已关闭评论

LINUX 软件RAID

参考:

RAID软件磁盘阵列
https://www.cnblogs.com/weq0805/p/14915557.html

RAID软件磁盘阵列
https://blog.csdn.net/AhhSong/article/details/77898687

RAID软件磁盘阵列技术
http://www.voycn.com/article/dachangxiaochangdouzaiyongderaidruanjiancipanzhenliejishubixuxueqilai

 

.

 

发表在 linux | LINUX 软件RAID已关闭评论

go 不能导入自定义包 GO111MODULE

提示1:
# example1/cli
cli\main.go:20:10: cannot refer to unexported name c2.w

提示2:
PS E:\go\go-example1> go run ./cli
cli\main.go:6:5: local import "./../c2" in non-local package

提示3:
main.go:5:2: cannot find package "hello/mylib" in any of:
C:\Program Files\Go\src\hello\mylib (from $GOROOT)
C:\Users\Administrator\go\src\hello\mylib (from $GOPATH)

---------------------------

查询:
go env

C:\Users\administratorsXu>go env
set GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\administratorsXu\AppData\Local\go-build
set GOENV=C:\Users\administratorsXu\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=E:\studyCode\code\GO\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=E:\studyCode\code\GO
set GOPRIVATE=
set GOPROXY=https://goproxy.cn,direct
set GOROOT=E:\progranfiles\go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=E:\progranfiles\go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.17.3
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=NUL
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments ...

GO111MODULE

用环境变量 GO111MODULE 开启或关闭模块支持,它有三个可选值:off、on、auto,默认值是 auto。

GO111MODULE=off 无模块支持,go 会从 GOPATH 和 vendor 文件夹寻找包。
GO111MODULE=on 模块支持,go 会忽略 GOPATH 和 vendor 文件夹,只根据 go.mod 下载依赖。
GO111MODULE=auto 在 $GOPATH/src 外面且根目录有 go.mod 文件时,开启模块支持。

解决方案
go env -w GO111MODULE=off

go env -w GO111MODULE=auto

 

发表在 go | go 不能导入自定义包 GO111MODULE已关闭评论

赏心悦目的代码分层

该如何分层,才能给人赏心悦目的感觉?

说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦。

的确在这些人眼中分层只是一个形式,前辈们的代码这么写的,其他项目代码这么写的,那么我也这么跟着写。但是在真正的团队开发中每个人的习惯都不同,写出来的代码必然带着自己的标签,有的人习惯controller写大量的业务逻辑,有的人习惯在service中之间调用远程服务,这样就导致了每个人的开发代码风格完全不同,后续其他人修改的时候,一看,我靠这个人写的代码和我平常的习惯完全不同,修改的时候到底是按着自己以前的习惯改,还是跟着前辈们走,这又是个艰难的选择,选择一旦有偏差,你的后辈又维护你的代码的时候,恐怕就要骂人了。

所以一个好的应用分层需要具备以下几点:

方便后续代码进行维护扩展;

分层的效果需要让整个团队都接受;

各个层职责边界清晰。

# 如何进行分层

1、阿里规范

在阿里的编码规范中约束的分层如下:

开放接口层:可直接封装 Service 方法暴露成 RPC 接口;通过 Web 封装成 http 接口;进行 网关安全控制、流量控制等。

终端显示层:各个端的模板渲染并执行显示的层。当前主要是 velocity 渲染,JS 渲染, JSP 渲染,移动端展示等。

Web 层:主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。

Service 层:相对具体的业务逻辑服务层。

Manager 层:通用业务处理层,它有如下特征:1. 对第三方平台封装的层,预处理返回结果及转化异常信息;2. 对Service层通用能力的下沉,如缓存方案、中间件通用处理;3. 与DAO层交互,对多个DAO的组合复用。

DAO 层:数据访问层,与底层 MySQL、Oracle、Hbase 进行数据交互。

阿里巴巴规约中的分层比较清晰简单明了,但是描述得还是过于简单了,以及service层和manager层有很多同学还是有点分不清楚之间的关系,就导致了很多项目中根本没有Manager层的存在。下面介绍一下具体业务中应该如何实现分层。

# 优化分层

从我们的业务开发中总结了一个较为的理想模型,这里要先说明一下由于我们的rpc框架选用的是thrift可能会比其他的一些rpc框架例如dubbo会多出一层,作用和controller层类似

最上层controller和TService是我们阿里分层规范里面的第一层:轻业务逻辑,参数校验,异常兜底。通常这种接口可以轻易更换接口类型,所以业务逻辑必须要轻,甚至不做具体逻辑。

Service:业务层,复用性较低,这里推荐每一个controller方法都得对应一个service,不要把业务编排放在controller中去做,为什么呢?如果我们把业务编排放在controller层去做的话,如果以后我们要接入thrift,我们这里又需要把业务编排在做一次,这样会导致我们每接入一个入口层这个代码都得重新复制一份如下图所示:

这样大量的重复工作必定会导致我们开发效率下降,所以我们需要把业务编排逻辑都得放进service中去做:

Mannager:可复用逻辑层。这里的Mannager可以是单个服务的,比如我们的cache,mq等等,当然也可以是复合的,当你需要调用多个Mannager的时候,这个可以合为一个Mannager,比如逻辑上的连表查询等。如果是httpMannager或rpcMannager需要在这一层做一些数据转换

DAO:数据库访问层。主要负责“操作数据库的某张表,映射到某个java对象”,dao应该只允许自己的Service访问,其他Service要访问我的数据必须通过对应的Service。

# 分层领域模型的转换

在阿里巴巴编码规约中列举了下面几个领域模型规约:

DO(Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。

DTO(Data Transfer Object):数据传输对象,Service或Manager向外传输的对象。

BO(Business Object):业务对象。由Service层输出的封装业务逻辑的对象。

AO(Application Object):应用对象。在Web层与Service层之间抽象的复用对象模型,极为贴近展示层,复用度不高。

VO(View Object):显示层对象,通常是Web向模板渲染引擎层传输的对象。

Query:数据查询对象,各层接收上层的查询请求。注意超过2个参数的查询封装,禁止使用Map类来传输。

每一个层基本都自己对应的领域模型,这样就导致了有些人过于追求每一层都是用自己的领域模型,这样就导致了一个对象可能会出现3次甚至4次转换在一次请求中,当返回的时候同样也会出现3-4次转换,这样有可能一次完整的请求-返回会出现很多次对象转换。如果在开发中真的按照这么来,恐怕就别写其他的了,一天就光写这个重复无用的逻辑算了吧。

所以我们得采取一个折中的方案:

1、允许Service/Manager可以操作数据领域模型,对于这个层级来说,本来自己做的工作也是做的是业务逻辑处理和数据组装。

2、Controller/TService层的领域模型不允许传入DAO层,这样就不符合职责划分了。

3、同理,不允许DAO层的数据传入到Controller/TService。

 

文摘:

来源:http://t.cn/RdrmI7i

特别声明:文章摘自来源地址,仅代表该作者观点。

.

 

发表在 java | 赏心悦目的代码分层已关闭评论

Linux LVM 文件系统损坏导致无法正常启动与fsck修复工具

系统情况:  一块盘/LVM分区/ boot主分区 xfs 格式
--
然后输入命令:fsck (然后根据提示输入yes)

再输入命令:fsck –y /dev/sda1

最后reboot重启系统即可

fsck修复工具

使用man fsck中找到这段解释:check and repair a Linux file system。

从这里可以知道,fsck工具不仅可以做文件系统的检查(扫描),还能修复文件系统,当然fsck所能修复的问题也是有限的,但又不失为一个便捷的自带修复工具。fsck的使用权限必须是root权限。

语法:fsck [-sACVRP] [-t fstype] [--] [fsck-options] filesys [...]

参数:

-t : 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数

-s : 依序一个一个地执行 fsck 的指令来检查

-A : 对/etc/fstab 中所有列出来的 partition 做检查

-C : 显示完整的检查进度

-d : 列印 e2fsck 的 debug 结果

-p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行

-R : 同时有 -A 条件时,省略 / 不检查(忽略根文件系统)

-V : 详细显示模式

-a : 如果检查有错则自动修复

-r : 如果检查有错则由使用者回答是否修复

-n:对所有文件进行检测,对所有提问都用no回答(交互式统一为no,不需手动输入);只检测文件系统,不进行修复,只报告。

-y:与-n相对,对所有文件进行检测,对所有提问都用yes回答,无须人工干预,自动修复文件系统。

-D:通知fsck额外检查系统的一致性。

-f 强制进行检查


 

.

 

发表在 linux | Linux LVM 文件系统损坏导致无法正常启动与fsck修复工具已关闭评论

WordPress手动升级教程

1、备份Wordpress资料及数据库,强烈建议,为安全起见。

2、下载最新版的Wordpress,切记进入Wordpress官网下载。

3、删除主机上的wp-includes和wp-admin目录。

4、把解压在本地电脑的 WordPress 文件夹中除了wp-content目录外的所有文件都上传并覆盖到你博客主机相对应的位置。遇到是否覆盖时,选择全部覆盖就是了。

5、运行 http://你的博客地址/wp-admin/upgrade.php,执行升级。

原创文章作者:wwh,如若转载,请注明出处:https://www.wuwenhui.cn/3090.html

发表在 technologys | WordPress手动升级教程已关闭评论

OpenSSH漏洞 CVE-2020-15778 修复记录

漏洞原理

​ 该漏洞发生于 OpenSSH <= 8.3p1 系统,即使在禁用ssh登录的情况下,但是允许使用scp传文件,而且远程服务器允许使用反引号(`),可利用scp复制文件到远程服务器时,执行带有payload的scp命令,从而在后续利用中getshell。

​scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。

​ 上面的意思主要是说:在知道ssh登录密码,但是禁用了登录,没有禁用scp的情况下,可以利用该漏洞。前提:知道ssh密码。所以该漏洞最重要的防范措施我认为是,保管好ssh密码,设置较高的密码复杂度。

漏洞处理

​ 本次处理使用禁用scp方法,服务器一般没有用到scp,多数使用sftp。

#查看openssh安装包
[root@localhost ~]# rpm -qa|grep openssh-*
openssh-7.4p1-21.el7.x86_64
openssh-clients-7.4p1-21.el7.x86_64
openssh-server-7.4p1-21.el7.x86_64
#卸载openssh-clients
[root@localhost ~]# yum remove openssh-clients -y
#重启sshd服务
[root@localhost ~]# systemctl restart sshd.service
[root@localhost ~]# scp 
-bash: scp: 未找到命令

从其他服务器通过scp拷贝文件到本服务器,也会提示找不到命令了。

[root@host-192.168.1.1 logs]# scp localhost.2021-04-07.log root@192.168.1.2:/home/
The authenticity of host '192.168.1.2 (192.168.1.2)' can't be established.
ECDSA key fingerprint is SHA256:no50I09gBIRzzj2oe/4RdVCwopzA44zjeLJWbrgkizM.
ECDSA key fingerprint is MD5:36:9a:5c:7a:dc:a1:41:d0:37:c3:61:01:2c:e7:c6:04.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.2' (ECDSA) to the list of known hosts.
root@192.168.1.2's password:    #此处输入密码
bash: scp: 未找到命令
lost connection

ssh正常,sftp正常。

OpenSSH 命令注入漏洞(CVE-2020-15778)修复就宣告完成。

修复案例

避免该问题的建议

1、周期性的更换密码或密钥

2、使用rsync代替scp

参考

https://blog.csdn.net/lhrm0213/article/details/117549337

https://www.secpulse.com/archives/143302.html

 

 

 

 

 

 

 

 

 

.

 

发表在 linux | OpenSSH漏洞 CVE-2020-15778 修复记录已关闭评论

npm in china mirrors

使用npm可以很方便的安装各种Node模块,但是npm默认连接的镜像库在国外,致使我们安装模块时很慢,甚至出现卡死现象。

官方镜像

https://registry.npmjs.org/

淘宝镜像

这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。
网站地址:https://npm.taobao.org/
registry地址:http://registry.npm.taobao.org

cnpmjs镜像

网站地址:http://cnpmjs.org
registry地址:http://r.cnpmjs.org

 

切换到淘宝镜像

1. 临时使用

npm --registry https://registry.npm.taobao.org install xxxx

2. 永久使用

npm config set registry https://registry.npm.taobao.org

3. 验证配置

npm config get registry

使用cnpm工具

1. 安装

npm install -g cnpm --registry=https://registry.npm.taobao.org

2. 使用

cnpm install xxx

 

NPM INSTALL FOR CENTOS 7

1.安装gcc

yum install gcc gcc-c++

2.下载node国内镜像(推荐)

wget https://npm.taobao.org/mirrors/node/v16.8.0/node-v16.8.0-linux-x64.tar.gz

3.解压并重命名文件夹

tar -xvf node-v16.8.0-linux-x64.tar.gz
mv node-v16.8.0-linux-x64 node

4.添加环境变量

vi /etc/profile

在文件最后添加以下配置:

export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH

5.刷新配置

source /etc/profile

6.验证结果

node -v

npm -v

 

ERRORS

Node Sass version 6.0.1 is incompatible with ^4.0.0

cnpm uninstall node-sass
cnpm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install node-sass@4.14.1

ERRORS

# gyp error
# cnpm install -g npm

# Cannot find module 'node-sass'
# cnpm uninstall node-sass
# cnpm install node-sass@4.14.1

# Node Sass version 6.0.0 is incompatible with^4.0.0
# cnpm uninstall node-sass
# cnpm install node-sass@4.14.1

# Error: Node Sass does not yet support your current environment
# cnpm rebuild node-sass
# or
# cnpm uninstall --save node-sass
# cnpm cache clean -f
# cnpm install --save node-sass

# npm
# npm uninstall node-sass
# npm install -g cnpm --registry=https://registry.npm.taobao.org
# npm install node-sass@4.14.1

查看通过 npm install -g xxx 安装的全局组件存放位置

npm config get prefix
C:\Users\Administrator\AppData\Roaming\npm

 

 

.

 

发表在 technologys | npm in china mirrors已关闭评论