IPMITOOL单机批量执行命令

首先得安装有ipmitool或者OpenIPMI的包以及加载相应的内核模块

yum install ipmitool -y -q
modprobe ipmi_watchdog
modprobe ipmi_poweroff
modprobe ipmi_devintf
modprobe ipmi_si

执行例子

ipmitool exec ipmi.txt -I lanplus  -U '用户' -P '密码' -H IP地址

ipmi.txt内容例子 

power status
sensor
mc info
user list
lan print

主要是把所有的命令写在一个文本里面, 不用每次发送命令都带上IP 用户名密码等等

尤其是遇上更改IPMI的IP配置和用户配置的时候, 省去了一大部分的冗余操作.


通过ssh备份juniper配置文件

首先,为了方便rsa免密码登陆要事先准备好.

其次,如果有堡垒机穿透也要事先在ssh/config下配置好.

方法一

ssh [email protected] "cli<< EOF
show configuration|dis set
EOF 
" |grep set >junos.backup.txt

 方法二

ssh [email protected]   'csh -s'  <./backup.sh |grep set > junos.backup.txt

方法二是用csh -s将本地的脚本文件内容抛到juniper上执行.


用grub引导netinstall安装Centos系统

没有DHCP 没有PXE  也没有netboot , IPMI又卡, 之前的老办法.

ks脚本需要提前准备一下

阅读剩余部分...

centos下的docker安装

源码仓库安装

wget https://download.docker.com/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce
systemctl start docker

脚本安装

curl -fsSL https://get.docker.com |bash 
sh get-docker.sh


奇怪的iredmail安装脚本之一

源码安装

wget  https://github.com/iredmail/iRedMail/archive/1.2.1.tar.gz  -O -|tar xz
cd  iRedMail-*
bash iRedMail.sh

Docker安装

docker volume create iRedMail
docker run \
    --rm \
    --name iredmail \
    --env-file /iredmail/iredmail-docker.conf \
    --hostname Your-domian..com \
    -p 80:80 \
    -p 443:443 \
    -p 110:110 \
    -p 995:995 \
    -p 143:143 \
    -p 993:993 \
    -p 25:25 \
    -p 465:465 \
    -p 587:587 \
    -v /iredmail/data/backup:/var/vmail/backup \
    -v /iredmail/data/mailboxes:/var/vmail/vmail1 \
    -v /iredmail/data/mlmmj:/var/vmail/mlmmj \
    -v /iredmail/data/mlmmj-archive:/var/vmail/mlmmj-archive \
    -v /iredmail/data/imapsieve_copy:/var/vmail/imapsieve_copy \
    -v /iredmail/data/custom:/opt/iredmail/custom \
    -v /iredmail/data/ssl:/opt/iredmail/ssl \
    -v /iredmail/data/mysql:/var/lib/mysql \
    -v /iredmail/data/clamav:/var/lib/clamav \
    -v /iredmail/data/sa_rules:/var/lib/spamassassin \
    iredmail/mariadb:nightly

奇怪的安装mysql脚本之一

groupadd mysql -g 27

useradd mysql -u 27 -g 27 -c "MySQL Server" -d /home/mysql -m

function代码

function install_mysql() {
groupadd mysql
useradd -s /sbin/nologin -M -g mysql mysql
 if [ -n "$1" ] ;  then  mysqlrootpwd=$1; else mysqlrootpwd=`openssl rand -base64 32| tr -dc _A-Z-a-z-0-9 | head -c12`;  fi
echo root $mysqlrootpwd ' | ' `date`  >> /root/mysql.txt
yum -y -q install mariadb mariadb-server galera
ln -s /usr/lib/systemd/system/mariadb.service /usr/lib/systemd/system/mysql.service
systemctl enable mariadb
systemctl start mariadb
mysqladmin -u root password $mysqlrootpwd
setmyqlroot $mysqlrootpwd
sed -i 's/skip-locking/skip-external-locking/g' /etc/my.cnf
}
function setmyqlroot() {
 if [ -n "$1" ] ;  then  mysqlrootpwd=$1; else mysqlrootpwd=`openssl rand -base64 32| tr -dc _A-Z-a-z-0-9 | head -c12`; echo root $mysqlrootpwd ' | ' `date`  >> /root/mysql.txt ;  fi
mysql -uroot -p$mysqlrootpwd <<EOF
UPDATE mysql.user SET Password=PASSWORD("$mysqlrootpwd") WHERE User='root';
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;
exit
EOF
}

执行安装

install_mysql()


mysql_install_db --user=mysql --datadir=/home/mysql --no-defaults  &

mysqladmin -u root password $mysqlrootpwd


奇怪的svm脚本之一

lvcreate -L 50G  -n   /dev/vg0/home

阅读剩余部分...

centos下vsftpd简易快速部署

有很久没用vsftpd了, 最近做自动备份需要用到ftp服务器, 思来想去也只有vsftp简单粗暴快捷了.

function setftpuser() { 
	setpassword=`openssl rand -base64 12|tr -dc _A-Z-a-z-0-9`;
	adduser $1
	echo $1 >> /etc/vsftpd/chroot_list
	chmod 750 /home/$1
	echo $1:$setpassword|chpasswd
	echo $1 $setpassword;
	echo $1 $setpassword > /root/vsftp.txt;
}
function vsftp-setup{
	yum -y install vsftpd
	cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.default
	sed -i 's#anonymous_enable=YES#anonymous_enable=NO#g' /etc/vsftpd/vsftpd.conf
	sed -i 's#listen=NO#listen=YES#g' /etc/vsftpd/vsftpd.conf
	sed -i 's#listen_ipv6=YES#listen_ipv6=NO#g' /etc/vsftpd/vsftpd.conf
	sed -i  's/#chroot_/chroot_/g'  /etc/vsftpd/vsftpd.conf
	systemctl enable vsftpd
	systemctl start vsftpd
}
vsftp-setup            #安装vsftpd
setftpuser 用户名   #添加用户

ssh jail环境没有弄, 后面有精力再弄上.

RouterOS NAT内网映射

/ip firewall nat
add chain=srcnat src-address=内网IP段/24 protocol=tcp action=masquerade
add action=dst-nat chain=dstnat dst-address=公网IP dst-port=80,443,5900 protocol=tcp to-addresses=内网IP  to-ports=0-65535
add action=dst-nat chain=dstnat dst-address=公网IP dst-port=623 protocol=udp to-addresses=内网IP  to-ports=0-65535

怕忘记了,懒得到处找.

关于LVM丢分区和丢数据(最近又又又发生了)

LVM在linux下灵活划分硬盘空间分区是非常好用的一个东西.

从centos5开始到现在还在用的centos7, 我一直都在和lvm做斗争.

问题其实也简单, 无非就是lv分区导致丢失: 分区的md编号错乱丢失lv, lvremove恢复后丢失lv, 以及还有许多已经忘记的原因.


上月由于机柜搬迁数据中心的问题,  一些宿主服务器子系统较多关机时间太长, 在半路进行了强制关机.

然而在恢复完后就发现一些子系统没有恢复, 由于标签显示是自用的节点又暂时没有时间就延后处理了.

今天清点后发现全是自用的节点, 好在都是非一线重要的东西.


7月底一台快7年的E3 4x1T RAID10的服务器硬盘挂掉导致whmcs数据丢失了一部分重要的数据, 

又因为之前迁移进来后没有做定时数据备份, 好在抢救到的数据能维持正常运行, 覆盖早先的备份后一切正常,

此事算妥善处理完成了.


丢数据的事其实已经亲身遇上过很多次了, 硬盘坏掉和LVM丢分区的事每年都有遇上, 即使有RAID也会翻车的可能.

从第一次在webnx的RAID10挂掉, 到LVM串联硬盘分区, 再到rm -rf 数据库, 以及这次又是RAID的挂掉.


数据备份不能马虎, 一定要做, 且异地备份 本地备份 差异备份 同步备份 都要做上, 数据越重要就越需要做备份.


有2次丢掉财务数据库经验的我总结的经验是, 不是每次都那么幸运可以靠手动修复数据.

有时候没了就是没了, 说啥都没有用.

Let’s Encrypt/Certbot Wildcard SSL certificate

export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
yum install -y git
cd /opt
git clone https://github.com/certbot/certbot.git
cd certbot && ./certbot-auto
 /opt/certbot/certbot-auto certonly --manual --preferred-challenges dns -d *.域名.后缀

--preferred-challenges dns的参数会要求建立一个_acme-challenge.的txt dns指向记录验证域名.


./certbot-auto certificates


comware设置ssh免密码登陆

ssh-keygen -f .ssh/id_rsa.pub -e -m pem | grep -v '\-\-\-\-' | base64 -d | xxd -p #转换已有的rsa key

免密码登陆ssh

####交换机配置
rsa peer-public-key 1                   
public-key-code begin
#此处是转换后的key数据
public-key-code end
peer-public-key end
#
user-interface vty 0 4
authentication-mode aaa
user privilege level 15
protocol inbound ssh
#
aaa
local-user 用户名 password cipher 密码 privilege level 15 #local-user netadmin privilege level 15
local-user 用户名 service-type stelnet 
local-user 用户名 service-type ssh
#
stelnet server enable
ssh user 用户名 authentication-type rsa
ssh user 用户名 assign rsa-key 1
ssh user 用户名 service-type stelnet

设置密码登陆方式

user-interface vty 0 4
authentication-mode aaa
protocol inbound ssh
#
aaa
local-user 用户名 password cipher 密码 privilege level 15
local-user 用户名 service-type stelnet 
local-user 用户名 service-type ssh
#
stelnet server enable
ssh user 用户名 authentication-type password
ssh user 用户名 service-type stelnet


ubuntu把netplan改回ifupdown

The following procedure works for Ubuntu 18.04 (Bionic Beaver)

I. Reinstall the ifupdown package:

# apt-get update
# apt-get install ifupdown

II. Configure your /etc/network/interfaces file with configuration stanzas such as:

source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
allow-hotplug enp0s3
auto enp0s3
iface enp0s3 inet static
  address 192.168.1.133
  netmask 255.255.255.0
  broadcast 192.168.1.255
  gateway 192.168.1.1
  # Only relevant if you make use of RESOLVCONF(8)
  # or similar...
  dns-nameservers 1.1.1.1 1.0.0.1

III. Make the configuration effective (no reboot needed):

# ifdown --force enp0s3 lo && ifup -a
# systemctl unmask networking
# systemctl enable networking
# systemctl restart networking

IV. Disable and remove the unwanted services:

# systemctl stop systemd-networkd.socket systemd-networkd \
networkd-dispatcher systemd-networkd-wait-online
# systemctl disable systemd-networkd.socket systemd-networkd \
networkd-dispatcher systemd-networkd-wait-online
# systemctl mask systemd-networkd.socket systemd-networkd \
networkd-dispatcher systemd-networkd-wait-online
# apt-get --assume-yes purge nplan netplan.io

Then, you're done.

Note: You MUST, of course, adapt the values according to your system (network, interface name...).

阅读剩余部分...

nginx屏蔽搜索引擎

在http字段下加入一个map做匹配引导

map $http_user_agent $limit_bots {
     default 0;
     ~*(baiduspider|google|soso|bing|yandex|sogou|yahoo|sohu-search|yodao|YoudaoBot|robozilla|msnbot|MJ12bot|NHN|Twiceler) 1;
     ~*(AltaVista|Googlebot|Slurp|BlackWidow|Bot|ChinaClaw|Custo|DISCo|Download|Demon|eCatch|EirGrabber|EmailSiphon|EmailWolf|SuperHTTP|Surfbot|WebWhacker) 1;
     ~*(Express|WebPictures|ExtractorPro|EyeNetIE|FlashGet|GetRight|GetWeb!|Go!Zilla|Go-Ahead-Got-It|GrabNet|Grafula|HMView|Go!Zilla|Go-Ahead-Got-It) 1;
     ~*(rafula|HMView|HTTrack|Stripper|Sucker|Indy|InterGET|Ninja|JetCar|Spider|larbin|LeechFTP|Downloader|tool|Navroad|NearSite|NetAnts|tAkeOut|WWWOFFLE) 1;
     ~*(GrabNet|NetSpider|Vampire|NetZIP|Octopus|Offline|PageGrabber|Foto|pavuk|pcBrowser|RealDownload|ReGet|SiteSnagger|SmartDownload|SuperBot|WebSpider) 1;
     ~*(Teleport|VoidEYE|Collector|WebAuto|WebCopier|WebFetch|WebGo|WebLeacher|WebReaper|WebSauger|eXtractor|Quester|WebStripper|WebZIP|Wget|Widow|Zeus) 1;
     ~*(Twengabot|htmlparser|libwww|Python|perl|urllib|scan|Curl|email|PycURL|Pyth|PyQ|WebCollector|WebCopy|webcraw) 1;
 }


再到server字段或者是location字段下加入if判断

  if ($limit_bots = 1) {  return 403;  }


id_rsa加密码和移除密码

增加密码

openssl rsa -aes256 -in your.key -out your.encrypted.key


移除密码

openssl rsa -in your.key -out your.open.key

id_rsa文件需要400的权限, 否则不能使用.


原文引用自https://stackoverflow.com/questions/42863913/key-load-public-invalid-format