[工具] Shell 批量修改多个远程服务器某一个用户的过期密码

介绍:

作者:朱明宇
名称:批量修改多个远程服务器某一个用户的过期密码
作用:批量修改多个远程服务器某一个用户的过期密码

#使用方法:
1. 将此脚本和清单 $list 文件放在同一目录下
2. 清单 $list 里每一个远程服务器名或 IP 地址占用一行
3. 在此脚本的分割线内写入相应的内容
4. 在执行此脚本的系统上安装 expect
5. 给此脚本添加执行权限
6. 执行此脚本

脚本分割线里的变量:
1. oldpassword=123 #原密码
2. newpassword=abc #新密码
3. user=root #要修改密码的用户
4. list=servers.txt #指定服务器清单

脚本:

#!/bin/bash

####################### Separator ########################

oldpassword=123
newpassword=abc
user=root
list=servers.txt

####################### Separator ########################

set timeout 5

for i in `cat $list`
do
        echo $i
        ssh $i "whoami"

        if [ $? -eq 0 ];then
                continue
        fi

        expect << EOF
        spawn ssh $user@$i
        expect "Current password:"    {send "$oldpassword\r"}
        expect "New password:"        {send "$newpassword\r"}
        expect "Retype new password:" {send "$newpassword\r"}
        expect ">"                    {send "\r"}
        EOF

       echo

done

[内容] Linux umask 的设置

内容目录:

内容一:默认权限值的含义

内容二:临时默认权限的设置
2.1 默认权限值的方法
2.2 默认权限值的方法
2.2.1 方法一:使用权限数字设置默认权限值
2.2.2 方法二:使用权限标志设置默认权限值

内容三:永久默认权限的设置
3.1 给某个用户单独设置 umask
3.1.1 给某个用户单独添加 umask 参数
3.1.2 让 umask 设置生效
3.2 全局设置 umask 的方法
3.2.1 通过修改 /etc/profile 文件实现
3.2.1.1 通过修改 /etc/profile 文件实现案例一
3.2.1.1.1 在 /etc/profile 文件里设置全局 umask 参数
3.2.1.1.2 让 umask 设置生效
3.2.1.2 通过修改 /etc/profile 文件实现案例二
3.2.1.2.1 在 /etc/profile 文件里设置全局 umask 参数
3.2.1.2.2 让 umask 设置生效
3.2.2 通过修改 /etc/bashrc 文件实现
3.2.2.1 通过修改 /etc/bashrc 文件实现案例一
3.2.2.1.1 在 /etc/bashrc 文件里设置全局 umask 参数
3.2.2.1.2 让 umask 设置生效
3.2.2.2 通过修改 /etc/bashrc 文件实现案例二
3.2.2.2.1 在 /etc/bashrc 文件里设置全局 umask 参数
3.2.2.2.2 让 umask 设置生效

具体的内容:

内容一:默认权限值的含义

如果 umask 的值是 0022:
创建的新目录的默认权限是:777 – 022 = 755
创建的新文件的默认权限是:666 – 022 = 644

内容二:临时默认权限的设置
2.1 默认权限值的方法

# umask
0022

2.2 默认权限值的方法
2.2.1 方法一:使用权限数字设置默认权限值

# umask 0002

2.2.2 方法二:使用权限标志设置默认权限值

# umask -S u=rwx,g=rwx,o=rw

内容三:永久默认权限的设置
3.1 给某个用户单独设置 umask
3.1.1 给某个用户单独添加 umask 参数

# vim ~/.bashrc 

添加以下内容:

......
umask 022


补充:
1) 这里以将 umask 设置为 022 为例
2) 补充 /etc/bashrc 文件会比 /etc/profile 文件更有优先级

3.1.2 让 umask 设置生效

# source ~/.bashrc

3.2 全局设置 umask 的方法
3.2.1 通过修改 /etc/profile 文件实现
3.2.1.1 通过修改 /etc/profile 文件实现案例一
3.2.1.1.1 在 /etc/profile 文件里设置全局 umask 参数

# vim /etc/profile

将以下内容:

......
if [ $UID -gt 199 ] && 
    [ "`/usr/bin/id -gn`" = "`/usr/bin/id un`" ]; then
    umask 002 
else
    umask 022
fi
......

修改为:

......
if [ $UID -gt 199 ] && 
    [ "`/usr/bin/id -gn`" = "`/usr/bin/id un`" ]; then
    umask 002 
else
    umask 022
fi
......


补充:
1) 这里以将 umask 设置为 022 为例
2) 补充 /etc/bashrc 文件会比 /etc/profile 文件更有优先级

3.2.1.1.2 让 umask 设置生效

# source /etc/profile

3.2.1.2 通过修改 /etc/profile 文件实现案例二
3.2.1.2.1 在 /etc/profile 文件里设置全局 umask 参数

# vim /etc/profile

添加以下内容:

......
umask 022


补充:
1) 这里以将 umask 设置为 022 为例
2) 补充 /etc/bashrc 文件会比 /etc/profile 文件更有优先级

3.2.1.2.2 让 umask 设置生效

# source /etc/profile

3.2.2 通过修改 /etc/bashrc 文件实现
3.2.2.1 通过修改 /etc/bashrc 文件实现案例一
3.2.2.1.1 在 /etc/bashrc 文件里设置全局 umask 参数

# vim /etc/bashrc

将以下内容:

......
if [ $UID -gt 199 ] && 
    [ "`/usr/bin/id -gn`" = "`/usr/bin/id un`" ]; then
    umask 002 
else
    umask 022
fi
......

修改为:

......
if [ $UID -gt 199 ] && 
    [ "`/usr/bin/id -gn`" = "`/usr/bin/id un`" ]; then
    umask 002 
else
    umask 022
fi
......


补充:
1) 这里以将 umask 设置为 022 为例
2) 补充 /etc/bashrc 文件会比 /etc/profile 文件更有优先级

3.2.2.1.2 让 umask 设置生效

# source /etc/bashrc

3.2.2.2 通过修改 /etc/bashrc 文件实现案例二
3.2.2.2.1 在 /etc/bashrc 文件里设置全局 umask 参数

# vim /etc/bashrc

添加以下内容:

......
umask 022


补充:
1) 这里以将 umask 设置为 022 为例
2) 补充 /etc/bashrc 文件会比 /etc/profile 文件更有优先级

3.2.2.2.2 让 umask 设置生效

# source /etc/bashrc

[命令] Linux 命令 lsblk (显示硬盘信息)

内容一:硬盘信息显示命令 lsblk 的选项

-a 或者 –all 显示所有设备
-b 或者 –bytes 以字节为单位而非易读的格式来显示 SIZE
-d 或者 –nodeps 不显示从属设备(slave)或占位设备(holder)
-D 或者 –discard 显示时丢弃能力
-z 或者 –zoned print zone model
-e 或者 –exclude <列表> 根据主设备号排除设备(默认:内存盘)
-f 或者 –fs 输出文件系统信息
-i 或者 –ascii 只使用 ascii 字符
-I 或者 –include <列表> 只显示有指定主设备号的设备
-J 或者 –json 使用 JSON 输出格式
-l 或者 –list 使用列表格式的输出
-T 或者 –tree use tree format output
-m 或者 –perms 输出权限信息
-n 或者 –noheadings 不显示标题
-o 或者 –output <列表> 输出列
-O 或者 –output-all 输出所有列
-p 或者 –paths 显示完整设备路径
-P 或者 –pairs 使用 key=“value” 输出格式
-r 或者 –raw 使用原生输出格式
-s 或者 –inverse 反向依赖
-S 或者 –scsi 输出有关 SCSI 设备的信息
-t 或者 –topology 输出拓扑信息
-x 或者 –sort <列> 按<列>对输出排序
–sysroot <dir> 使用指定目录当作根目录
-h 或者 –help 显示帮助
-V 或者 –version 显示版本

内容二:信息显示命令 lsblk 的使用
2.1 使用案例一:使用 lsblk 命令显示所有硬盘情况

# lsblk

2.2 使用案例二:使用 lsblk 命令显示所有硬盘的格式化信息

# lsblk -f

或者:

# lsblk --fs