存档

‘解决方案’ 分类的存档

解决yum 出错:error: rpmdb: BDB0113 Thread/process 8173/139681223043136 failed: BDB1507

2021年4月6日 没有评论

s使用Ctrl+c 或者 Ctrl + z 或者 kill 或者其他原因 结束掉了yum进程,当再次执行yum的相关操作时报错:
错误:rpmdb: BDB0113 Thread/process 15381/140029102753600 failed: BDB1507 Thread died in Berkeley DB library
错误:db5 错误(-30973) 来自 dbenv->failchk:BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
错误:无法使用 db5 – (-30973) 打开 Packages 索引
错误:无法从 /var/lib/rpm 打开软件包数据库
CRITICAL:yum.main:

Error: rpmdb open failed

原因:rpm数据库在强制结束yum进程时被破坏了
解决办法:重新构建即可,步骤如下:
1、cd /var/lib/rpm
2、rm __db.* -rf #删除所有rpm库
3、rpm –rebuilddb #rpm的重新构建命令
4、yum clean all #用yum clean all清除
5、yum grouplist #用yum grouplist 命令测试yum,并进行相关更新

分类: Linux, 解决方案 标签: ,

win2008R2 sp1 update 错误80072EFE

2021年3月7日 没有评论

如果在检查更新时收bai到 Windows Update 错误 80072efe 或 80072f76,可能是因为计算机与 Windows Update 服务器之间的连接中断引起的。关闭 Windows Update,等待 10 到 15 分钟,然后再次运行 Windows Update。您也可以等待 Windows 自动更新在在其下一次计划时间时运行。 如果仍接收到这些错误之一,则可以运行自动疑难解答程序,该程序可以解决有关 Windows Update 的一些常见问题。 单击以下按钮: 解决此问题 在“文件下载”对话框中,单击“运行”,然后按照向导中的步骤进行操作。下载地址:

https://docs.microsoft.com/zh-cn/troubleshoot/windows-client/deployment/update-windows-update-agent#automatically-download-windows-update-agent

原始产品版本: Windows 10 – 所有版本,Windows Server 2012
原始 KB 编号: 949104

命令行程序哈希值查询方法(适用于Win8及以上系统)

2021年3月4日 没有评论

【哈希值查询方法(适用于Win8及以上系统)】
在命令提示符中输入:
certutil -hashfile “在此输入文件路径” SHA256
certutil -hashfile “在此输入文件路径” SHA1
certutil -hashfile “在此输入文件路径” MD5

IIS7/8如何实现访问HTTP跳转到HTTPS访问

2021年2月7日 没有评论

在URL中新建规则

1.新建一个空白规则,让http的访问跳转到https上

2.起一个名字例如HTTP to HTTPS redirect

3.在操作条件设置中选择重定向:https://{HTTP_HOST}/{R:1}
重定向类型:已找到(302) 或 参阅其它(303) 注:默认301也是可以的。

ps:
排除问题,今天,安装完iis重写后,设定强制301从http跳转https时出现进程池自动死的问题。其实是版本不同。访问出现:

Service Unavailable
HTTP Error 503. The service is unavailable.

看了日志后发现以下问题提示: C:\WINDOWS\system32\inetsrv\rewrite.dll 未能加载。返回的数据为错误。
先全部删除重写组件和web平台组件服务。然后重新下载安装即可。

解决:
不要用Web平台组件去下载URL重写工具, 自己手动下载, Url Rewrite 2.0 https://www.microsoft.com/zh-cn/download/details.aspx?id=7435
IIS7和IIS8的依旧可以用。

分类: 网络产品, 解决方案 标签:

linux centos7清除系统日志历史记录登录信息

2021年2月1日 没有评论

平时不管是web还是系统产生的日志都可能导致洗盘爆满,所以我在这里分享一些基本常用清理linux日志的方法。

# echo > /var/log/wtmp //清除用户登录记录
# echo > /var/log/btmp //清除尝试登录记录
# echo>/var/log/lastlog //清除最近登录信息
# echo > /var/log/secure //登录信息
# echo > /var/log/messages
# echo>/var/log/syslog //记录系统日志的服务
# echo>/var/log/xferlog
# echo>/var/log/auth.log
# echo>/var/log/user.log
# cat /dev/null > /var/adm/sylog
# cat /dev/null > /var/log/maillog
# cat /dev/null > /var/log/openwebmail.log
# cat /dev/null > /var/log/mail.info
# echo>/var/run/utmp
清除操作过的命令记录

# echo > .bash_history //清除保存的用户操作历史记录
# history -cw //清除所有历史

Linux查看History记录加时间戳小技巧
熟悉bash的都一定知道使用history可以输出你曾经输入过的历史命令,例如
[root@servyou_web ~]# history | more
./test.sh
vim test.sh
./test.sh
但是这里只显示了命令,并没有显示执行命令的时间,因为保存历史命令的~/.bash_history里并没有保存时间。

通过设置环境变量 export HISTTIMEFORMAT=”%F %T whoami ” 给history加上时间戳

[root@servyou_web ~]# export HISTTIMEFORMAT=”%F %T whoami ”
[root@servyou_web ~]# history | tail
2011-06-22 19:17:29 root 15 2011-06-22 19:13:02 root ./test.sh
2011-06-22 19:17:29 root 16 2011-06-22 19:13:02 root vim test.sh
2011-06-22 19:17:29 root 17 2011-06-22 19:13:02 root ./test.sh
2011-06-22 19:17:29 root 18 2011-06-22 19:13:02 root vim test.sh
2011-06-22 19:17:29 root 19 2011-06-22 19:13:02 root ./test.sh
2011-06-22 19:17:29 root 20 2011-06-22 19:13:02 root vim test.sh
2011-06-22 19:17:29 root 21 2011-06-22 19:13:02 root ./test.sh
2011-06-22 19:17:29 root 22 2011-06-22 19:13:02 root vim test.sh
2011-06-22 19:25:22 root 22 2011-06-22 19:13:02 root vim test.sh
2011-06-22 19:25:28 root history | tail

可以看到,历史命令的时间戳已经加上了,但是.bash_history里并没有加上这个时间戳。其实这个时间记录是保存在当前shell进程内存里的,如果你logout并且重新登录的话会发现你上次登录时执行的那些命令的时间戳都为同一个值,即当时logout时的时间。

尽管如此,对于加上screen的bash来说,这个时间戳仍然可以长时间有效的,毕竟只要你的server不重启,screen就不会退出,因而这些时间就能长时间保留。你也可以使用echo ‘export HISTTIMEFORMAT=”%F %T whoami “‘ >> /etc/profile 然后source一下就OK

例二: vi /root/.bash_history

例三:

 1、修改/etc/profile将HISTSIZE=1000改成0或1

  清除用户home路径下。bash_history

  2、立即清空里的history当前历史命令的记录

  history -c

  3、bash执行命令时不是马上把命令名称写入history文件的,而是存放在内部的buffer中,等bash退出时会一并写入。

  不过,可以调用’history -w’命令要求bash立即更新history文件。

  history -w

如何将CentOS 7升级到CentOS 8

2021年1月9日 没有评论

在本文中,您将学习如何将CentOS 7升级到CentOS 8。本文描述的步骤尚未描述正式升级,因此不能应用于生产服务器。
Upgrade-CentOS-7-to-CentOS-8

步骤1:安装EPEL储存库

首先,通过运行以下命令安装EPL存储库

yum install epel-release -y

在CentOS 7中安装EPEL Repo

步骤2:安装yum-utils工具

成功安装EPEL之后,通过运行以下命令来安装yum-utils。

然后,您需要通过执行命令来解析RPM软件包。

yum install rpmconf
rpmconf -a

保留默认RPM设置

接下来,清理所有不需要的软件包。

package-cleanup –leaves
package-cleanup –orphans

清理RPM软件包

步骤3:在CentOS 7中安装dnf

现在安装dnf软件包管理器,它是CentOS 8的默认软件包管理器。

yum install dnf

在CentOS 7中安装dnf

您还需要使用以下命令删除yum软件包管理器。

dnf -y remove yum yum-metadata-parser
rm -Rf /etc/yum

在CentOS 7中删除Yum

步骤4:将CentOS 7升级到CentOS 8

dnf upgrade

升级CentOS 7

接下来,如下所示使用dnf安装CentOS 8发行包。这需要一段时间。

dnf -y upgrade http://mirror.bytemark.co.uk/centos/8/BaseOS/x86_64/os/Packages/centos-release-8.0-0.1905.0.9.el8.x86_64.rpm

安装CentOS 8版本

接下来,升级EPEL存储库。

dnf -y upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

升级EPEL存储库

成功升级EPEL存储库后,请删除所有临时文件。

dnf clean all
使用nodeps参数删除CentOS 7的旧内核。

rpm -e `rpm -q kernel` –nodeps
接下来,请确保删除有冲突的软件包。

rpm -e –nodeps sysvinit-tools
此后,启动CentOS 8系统升级,如下所示。

dnf -y –releasever=8 –allowerasing –setopt=deltarpm=false distro-sync

CentOS 8系统升级

如果升级发现有报错,需要卸载from package后面的报名:

rpm -e –nodeps sysvinit-tools-2.88-14.dsf.el7.x86_64
rpm -e –nodeps python-inotify-0.9.4-4.el7.noarch
rpm -e –nodeps adwaita-qt5-1.0-1.el7.x86_64
rpm -e –nodeps pycairo-1.8.10-8.el7.x86_64
然后再次执行升级,此步骤需要等待较长时间。

dnf -y –releasever=8 –allowerasing –setopt=deltarpm=false distro-sync
步骤5:为CentOS 8安装新内核

要为CentOS 8安装新的内核,请运行命令。

dnf -y install kernel-core

在CentOS 8中安装内核

最后,安装CentOS 8最小软件包。

dnf -y groupupdate “Core” “Minimal Install”
现在,您可以通过以下命令运行检查安装的CentOS版本。

cat /etc/redhat-release
检查CentOS版本

升级完系统,记得重启,以上是将CentOS 7升级到CentOS 8的步骤,升级之前请做好数据备份,升级会造成一部分应用被卸载;大家可以学习借鉴之,还有其他的升级方法。

Linux 运维需要掌握的 17 个实用技巧(转)

2020年12月1日 没有评论

1、查找当前目录下所有以.tar结尾的文件然后移动到指定目录:

find . -name “*.tar” -exec mv {}./backup/ ;

注解:find –name 主要用于查找某个文件名字,-exec 、xargs可以用来承接前面的结果,然后将要执行的动作,一般跟find在一起用的很多,find使用我们可以延伸-mtime查找修改时间、-type是指定对象类型(常见包括f代表文件、d代表目录),-size 指定大小,例如经常用到的:查找当前目录30天以前大于100M的LOG文件并删除。
find . -name “*.log” –mtime +30 –typef –size +100M |xargs rm –rf {};
2、批量解压当前目录下以.zip结尾的所有文件到指定目录:

for i in `find . –name “*.zip”–type f `

do

unzip –d $i /data/www/img/

done
注解:forI in (command);do … done为for循环的一个常用格式,其中I为变量,可以自己指定。

3、sed常用命收集:test.txt做测试

如何去掉行首的.字符:

sed-i ‘s/^.//g’ test.txt

在行首添加一个a字符:

sed’s/^/a/g’ test.txt

在行尾添加一个a字符:

sed’s/$/a/‘ tets.txt

在特定行后添加一个c字符:

sed ‘/wuguangke/ac’ test.txt

在行前加入一个c字符:

sed’/wuguangke/ic’ test.txt
更多sed命令请查阅相关文档。

4、如何判断某个目录是否存在,不存在则新建,存在则打印信息。

if

[! –d /data/backup/];then

Mkdir–p /data/backup/

else

echo “The Directory alreadyexists,please exit”

fi
注解:if…;then …else ..fi:为if条件语句,!叹号表示反义“不存在“,-d代表目录。

5、监控linux磁盘根分区,如果根分区空间大于等于90%,发送邮件给Linux SA

(1)、打印根分区大小

df -h |sed -n ‘//$/p’|awk ‘{print $5}’|awk –F ”%” ‘{print $1}’
注解:awk ‘{print $5}’意思是打印第5个域,-F的意思为分隔,例如以%分隔,简单意思就是去掉百分号,awk –F. ‘{print $1}’分隔点.号。

(2)、if条件判断该大小是否大于90,如果大于90则发送邮件报警

while sleep 5m

do

for i in `df -h |sed -n ‘//$/p’ |awk ‘{print $5}’ |sed ‘s/%//g’`

do

echo $i

if [ $i -ge 90 ];then

echo “More than 90% Linux of disk space ,Please LinuxSA Check Linux Disk !” |mail -s “Warn Linux / Parts is $i%”

XXX@XXX.XX

fi

done

done
6、统计 Nginx 访问日志,访问量排在前20 的 ip地址:

cat access.log |awk ‘{print $1}’|sort|uniq -c |sort -nr |head -20
注解:sort排序、uniq(检查及删除文本文件中重复出现的行列 )

7、sed另外一个用法找到当前行,然后在修改该行后面的参数:

sed -i ‘/SELINUX/s/enforcing/disabled/’ /etc/selinux/config
Sed冒号方式 sed -i ‘s:/tmp:/tmp/abc/:g’test.txt意思是将/tmp改成/tmp/abc/。

8、打印出一个文件里面最大和最小值:

cat a.txt |sort -nr|awk ‘{}END{print} NR==1′

cat a.txt |sort -nr |awk ‘END{print} NR==1′
这个才是真正的打印最大最小值:sed ‘s/ / /g’ a.txt |sort -nr|sed -n ’1p;$p’

9、使用snmpd抓取版本为v2的cacti数据方式:

snmpwalk -v2c -c public 192.168.0.241
10、修改文本中以jk结尾的替换成yz:

sed -e ‘s/jk$/yz/g’ b.txt
11、网络抓包:tcpdump

tcpdump -nn host 192.168.56.7 and port 80 抓取56.7通过80请求的数据包。

tcpdump -nn host 192.168.56.7 or ! host 192.168.0.22 and port 80 排除0.22 80端口!

tcp/ip 7层协议物理层–数据链路层-网络层-传输层-会话层-表示层-应用层。
12、显示最常用的20条命令:

cat .bash_history |grep -v ^# |awk ‘{print $1}’ |sort |uniq -c |sort -nr |head-20
13、写一个脚本查找最后创建时间是3天前,后缀是*.log的文件并删除。

find . -mtime +3 -name “*.log” |xargs rm -rf {} ;
14、写一个脚本将某目录下大于100k的文件移动至/tmp下。

find . -size +100k -exec mv {} /tmp ;
15、写一个防火墙配置脚本,只允许远程主机访问本机的80端口。

iptables -F

iptables -X

iptables -A INPUT -p tcp –dport 80 -j accept

iptables -A INPUT -p tcp -j REJECT
或者
iptables -A INPUT -m state –state NEW-m tcp -p tcp –dport 80 -j ACCEPT
16、写一个脚本进行nginx日志统计,得到访问ip最多的前10个(nginx日志路径:

/home/logs/nginx/default/access.log)。

cd /home/logs.nginx/default

sort -m -k 4 -o access.logok access.1 access.2 access.3 …..

cat access.logok |awk ‘{print $1}’|sort -n|uniq -c|sort -nr |head -10
17.替换文件中的目录
sed ‘s:/user/local:/tmp:g’ test.txt
或者

sed -i ‘s//usr/local//tmp/g’ test.txt

cisco 2960升级iso步骤

2020年8月3日 没有评论

手上有一台老的WS-C2960-48TT-L 交换机。要配置一些策略。还有ssh2、acl,发现无法进行命令不支持。查了下。原因是自己的iso太旧。不带k9的rom是不支持更多指令和相关功能的。

决定升级iso。步骤记录下来了。希望对大家有帮助。要用到一个工具。网上也有的下。主要就是bin的iso文件比较麻烦。

找了下,还是有好心人存了百度网盘。共享给大家:

https://yun.baidu.com/s/1gdCpCXX?errno=0&errmsg=Auth%20Login%20Sucess&&bduss=&ssnerror=0&traceid=

工具Cisco TFTP Server 建议在win7 win2008 win2012下使用。win10不支持

1、 配置IP地址好上传iOS和config.text文件

Switch#conf t

Switch(config)#int vlan 1

Switch(config)#ip add 192.168.0.254 255.255.0.0

Switch(config)#no shut

Switch(config)#end

Switch#ping 192.168.0.100 //电脑上配置的IP,要和上面的地址在一个网段

//ping通后说明网络没问题了,可以上传iOS和配置文件了

//把网线插入交换机的任意口,因为默认都在vlan1里

2、 上传iOS和配置文件

Switch#copy tftp: flash:

提示输入远程主机 192.168.0.100

提示输入要传的文件名(要注意带上后缀)c2960-lanbasek9-mz.122-50.SE10.bin

提示目的地文件名c2960-lanbasek9-mz.122-50.SE10.bin

传输开始,同上在把config.text文件也上传

3、 修改引导镜像

Switch#config t

Switch(config)#boot system flash: c2960-lanbasek9-mz.122-50.SE10.bin

Switch(config)#end

Switch#wr

Switch#reload

重启后进入查看是否启动新iOS,show version

确认后,copy flash:config.text system:running-config

Wr保存,至此升级和跟新配置完毕

分类: 解决方案 标签: ,

ubuntu18.04配置静态ip

2020年7月10日 没有评论

注意: 18.04和16.04不一样了,配置静态ip的方法有很大差异!

查找netplan目录下默认的网络配置文件,文件后缀为.yaml,我的是叫01-network-manager-all.yaml的文件。如果没有可以使用sudo gedit 01-network-manager-all.yam自己创建。

编辑网络配置文件01-network-manager-all.yaml,内容如下:
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
enp3s0: #配置的网卡名称,使用ifconfig -a查看得到
dhcp4: no #dhcp4关闭
addresses: [192.168.202.36/24] #设置本机IP及掩码
gateway4: 192.168.202.1 #设置网关
nameservers:
addresses: [192.168.202.1] #设置DNS

使用命令,使静态ip生效。
$ sudo netplan apply

误删/usr文件夹解决办法

2020年6月10日 没有评论

几个参考资料:

http://blog.chinaunix.net/uid-2623904-id-3044156.html

http://blog.csdn.net/xyw_blog/article/details/12996969

一般用光盘的救援模式解决,救援模式有什么作用:

◆可以更改root密码;
◆恢复硬盘、文件系统操作;
◆系统启动不来的时候,只能通过救援模式来启动;

进入resume模式。在进入resume模式过程中,会提示你的系统挂载在哪个位置。
一般挂载在/mnt/sysimage目录下。在/mnt/sysimage下有你系统的所有目录和文件,你可以根据你的需要将这些数据拷贝下来。

最后,进入bash模式.由于我是覆盖了我usr下得数据,我只需要覆盖/mnt/sysimage/下得usr目录即可。
cp -r /usr/ /mnt/sysimage/
ls /mnt/sysimage/usr (查看是否复制成功)
重启虚拟机,设置启动顺序。系统就成功修复了。(能使用基本命令)

在另一台与机器A相同的机器B上,使用tar命令将/usr目录打包。然后通过scp传给机器A,在A上将其解压,删除之前用Rescue模式拷贝进来的/usr目录,使用传递过来的usr目录,重启系统,现在可以正常进入系统了。但是存在的问题是,之前在系统中安装的软件需要重新编译安装。

分类: Linux, 解决方案 标签: ,