mysql 8.0.11授权的问题
安装之前的版本授权方式:mysql>grant all on test.* to 'alex'@'%' identified by '123456'; 一直报错。
解决办法:
use mysql;
create user 'alex'@'%' identified by '123456';
grant all on *.* to 'alex'@'%';
# ALTER USER 'alex'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
为什么 netstat 对某些服务只显示了 tcp6 监听端口
(http://www.chengweiyang.cn/2017/03/05/why-netstat-not-showup-tcp4-socket/)
sort命令使用详解
shell 脚本中将输出内容赋值给一个变量时的换行问题
将某命令的输出结果赋值给一个变量 a
如果使用 echo $a 输出变量,则变量中的 换行都会被忽略掉,所有内容输出到一行,而使用 echo "$a" 可正常输出变量中的换行
[root@localhost ~]# a=`cat aa.txt`
nginx 1.1.1.1
mysql1 2.2.2.2
mysql2 3.3.3.3
[root@localhost ~]# echo $a
nginx 1.1.1.1 mysql1 2.2.2.2 mysql2 3.3.3.3
[root@localhost ~]# echo "$a"
nginx 1.1.1.1
mysql1 2.2.2.2
mysql2 3.3.3.3
[root@localhost ~]#
就和"\n"一样,需要放在引号里面
rsync目录同步遇到的坑
rsync同步目录时需要注意的问题:同步的目录带'/'表示同步目录里面的内容,不带表示同步整个该目录
[root@nginx tmp]# ls /tmp/t1/
c d tt
[root@nginx tmp]# rsync -az /tmp/t1/ /tmp/t2/ #等价于rsync -az /tmp/t1/* /tmp/t2/
root@nginx tmp]# ls t2/
c d tt
[root@nginx tmp]# rm -rf /tmp/t2/*
[root@nginx tmp]# rsync -az /tmp/t1 /tmp/t2 #将目录t1同步过去(t2后面带不带'/'是一样的)
[root@nginx tmp]# ls t2/
t1
用ChrootDirectory限制SFTP登录的用户只能访问根目录却不能ssh登录
参考文档: https://www.cnblogs.com/lpfuture/p/5602644.html
#创建专门的用户组和用户
#groupadd sftp
#useradd sftp1 -g sftp -s /bin/false
#passwd sftp1
编辑/etc/ssh/sshd_config
# override default of no subsystems
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match User sftp1
ChrootDirectory /app/sftpuser1
ForceCommand internal-sftp
Match User sftp2
ChrootDirectory /app/sftpuser2
ForceCommand internal-sftp
注意ChrootDirectory设置的目录/app/sftpuser1的所有者必须是root,并且该目录的上级目录/app的所有者也必须是root.
而且只有所有者拥有写权限 /app/sftpuser1 , /app/的权限最大设置只能是755.
由于上面设置了目录的权限是755, 因此所有非root用户都无法在目录中写入文件.
我们需要在ChrootDirectory指定的目录下建立子目录比如data,重新设置属主和权限.
openssl passwd 手动生成密码
openssl passwd的作用是用来计算密码hash的,目的是为了防止密码以明文的形式出现。
语法格式: openssl passwd [option] <passwd>
-1:表示采用的是MD5加密算法。
-salt:指定salt值,不使用随机产生的salt。
[root@ansible ~]# openssl passwd -1
Password:
Verifying - Password:
$1$w7y9H5LW$Gv.3bsLxf/DIFN/PsKJDP0
[root@ansible ~]# openssl passwd -1 -salt '123'
Password:
$1$123$A0EIaZMI.IBoBztK3lMn20
[root@ansible ~]# echo 1234 |openssl passwd -1 -salt '123' -stdin
$1$123$A0EIaZMI.IBoBztK3lMn20
awk获取磁盘的使用率和inode使用率
#Disk使用率超过80%的
#HOSTNAME=webserver
#df -hP | awk '/^\/dev/{printf "%-30s%-30s\n",$1":",$5}' | awk -v hostname="$HOSTNAME" '{if(int($2)>80) {print "<warning>: "hostname" "$0}}'
#Disk Inode使用率超过80%的
#df -iP | awk -v hostname="$HOSTNAME" 'NR>1{if(int($5)>=80) {print "<warning>: "hostname" "$1": "$5}}'
shell 获取当前正在执行脚本的绝对路径
参考文档 : https://www.cnblogs.com/FlyFive/p/3640267.html
#!/bin/bash
shell_path=$(cd `dirname $0`;pwd)
- $0并不一定是绝对路径
- 等同于python之os.path.abspath(__file__)
while循环一行行读文件遇到的问题
当while读的文件里面有转意符号'\'时,读出来的跟实际有差异
$cat test.txt
aa/bb/cc/dd/ee
11\22\33\44\55
$cat a.sh
#!/bin/bash
while read line
do
echo "${line}"
done < test.txt
echo "----------------------"
for l in `cat test.txt`
do
echo "$l"
done
$
$
$./a.sh
aa/bb/cc/dd/ee
1122334455
-------------------------
aa/bb/cc/dd/ee
11\22\33\44\55
得到自己想要的:
#!/bin/bash
for line in `cat test.txt`
do
file=`echo "$line" | sed -r 's/[\\\\]/\//g'`
echo "$file"
done
执行得到的结果为:
aa/bb/cc/dd/ee
11/22/33/44/55