[娱乐] Shell 菜单

介绍

基本信息

作者:朱明宇
名称:菜单
作用:提供一个可以供用户进行选择的菜单

使用方法

1. 给此脚本添加执行权限
2. 执行此脚本

脚本

#!/bin/bash

while true
do
        echo
        echo '====== Optional Item ======'
        echo '1.choose CentOS'
        echo '2.choose RHEL'
        echo '3.choose openSUSE'
        echo '4.choose SUSE'
        echo '*.Enter other keys to exit'
        echo
        read -p 'Which one do you want to choose ? ' choose

        case $choose in
        1)
                echo
                echo
                echo '=========  Result ========='
                echo 'You have choosed CentOS'
                echo ;;
        2)
                echo
                echo
                echo '=========  Result ========='
                echo 'You have choosed RHEL'
                echo ;;
        3)
                echo
                echo
                echo '=========  Result ========='
                echo 'You have choosed openSUSE'
                echo ;;
        4)
                echo
                echo
                echo '=========  Result ========='
                echo 'You have choosed SUSE'
                echo ;;
        *)
                exit 1 ;;
        esac
done

[内容] Linux 空值的判断

案例一:

#!/bin/bash
var=
if [ ! -n "$var" ]; then
  echo "NULL"
else
  echo "NOT NULL"
fi

案例二:

#!/bin/bash
var=
if [ ! "$var" ]; then
  echo "NULL"
else
  echo "NOT NULL"
fi

案例三:

#!/bin/sh 
var=
if [ "$var" = "" ]
then
  echo "NULL"
else  
  echo "NOT NULL"
fi

案例四:

#!/bin/sh
var=
if test -z "$var"
then
  echo "NULL"
else  
  echo "NOT NULL"
fi

[命令] Linux 命令 mail (发送邮件)

内容一:mail 命令选项

1.1 输入 mail 命令后的选项

1) h 或者 headers 显示处于激活状态的邮件开头
2) f 或者 from 显示编号为 的邮件的标题
2) t 或者 type 显示编号为 的邮件
3) top 显示当前指针所指向的邮件头
4) n 或者 next 显示下一条邮件信息
5) e 编辑编号为 的邮件
6) d 或者 delete 删除编号为 的邮件
7) u 或者 undelete 取消删除编号为 的邮件
8) s 或者 save 追加信息到编号为 的邮件信息到 目录中并标记和保存
9) c 或者 copy 追加信息到编号为 的邮件信息到 目录中但不保存
10) w 或者 write 追加信息到编号为 的邮件信息到 文件中并保存附件
11) R 或者 Reply 回复编号为 的邮件的发件人
12) r 或者 reply 回复编号为 的邮件的发件人和所有收件人
13) m 或者 mail 回复编号为 的邮件,并回复多个联系人,多个收件人用空格分开 (需要 sendmail 软件支持此功能)
14) q 或者 quit 退出并保存新编辑的内容,q 会把邮件放在 ~/mbox 中,执行 pre 后就不取回
15) pre 将编号为 的邮件保留在 /usr/spool/mail,q 会把邮件放在 ~/mbox 中,执行 pre 后就不取回
16) x 或者 xit 只退出不保存新编辑的内容
17) file 显示邮件总数和在系统中所在的目录等信息
18) ! 执行 shell 的命令,例如 !ls
19) list 列出所有可用的命令

1.2 在 mail 命令后添加选项

1) -s 设置邮件的标题
2) -a 添加附件
3) -c …… 给多个邮件地址抄送邮件,不同邮件的邮件地址用空格隔开
4) -b …… 给多个邮件地址悄悄抄送邮件,不同邮件的邮件地址用空格隔开
5) -e 检查系统邮件中是否有邮件
6) -f 显示邮箱里的邮件
7) -f + 显示 folder 目录邮箱中的邮件
8) -i 忽略 tty 信号中断
9) -v 显示发送邮件过程的详细信息
10) -h 显示帮助信息
11) uuencode 发送文件,第一个附件是要发送的附件,第二个是设置的名称 (此选项需要安装 sharutils 软件)

内容二:mail 命令的使用案例

2.1 交互式发送邮件

# mail -s test mingyu.zhu@eternalcenter.com

(补充:这里以向邮箱 mingyu.zhu@eternalcenter.com 发送标题为 test 的邮件为例)

(注意:键入此命令后进入交互式编辑内容的模式,内容编辑完了以后可以按下 “ctrl” 键之后再按下 “D” 键退出)

2.2 非交互式发送邮件

# echo 'test content' | mail -s 'test header' mingyu.zhu@eternalcenter.com

(补充:这里以向 mingyu.zhu@eternalcenter.com 邮箱发送标题为 test header 内容为 test content 的邮件为例)

2.3 非交互式将文件里的内容作为内容发送邮件

# mail -s “test.txt” mingyu.zhu@eternalcenter.com < test.txt

(补充:这里以向 mingyu.zhu@eternalcenter.com 邮箱发送标题为 test header 将 test.txt 文件里的内容作为邮件内容的邮件为例)

2.4 非交互式将文件作为附件发送邮件

# uuencode /tmp/test.txt test.txt | mail -s 'test' mingyu.zhu@eternalcenter.com

(补充:这里以向 mingyu.zhu@eternalcenter.com 邮箱发送标题为 test 将 test.txt 文件作为名为 test.txt 的附件的邮件为例)

2.5 非交互式打包将文件作为附件发送邮件

# tar -czf test.txt.tar /tmp/test.txt | uuencode test.txt.tar | mail -s 'test' mingyu.zhu@eternalcenter.com

(补充:这里以向 mingyu.zhu@eternalcenter.com 邮箱发送标题为 test 将 test.txt.tar 文件作为名为 test.txt.tar 的附件的邮件为例)

2.6 非交互式将给多个用户抄送邮件

# mail -s “test.txt” -c "mingyu.zhu2@eternalcenter.com mingyu.zhu1@eternalcenter.com" mingyu.zhu@eternalcenter.com < test.txt

(补充:这里以向 mingyu.zhu@eternalcenter.com 邮箱发送标题为 test header 将 test.txt 文件里的内容作为邮件内容的邮件,并抄送给 mingyu.zhu2@eternalcenter.com 邮箱和 mingyu.zhu1@eternalcenter.com 邮箱为例)

[内容] Postfix 数据的加密 (通过 TLS 实现)

内容一:Postfix 不使用 TLS 加密数据传输的后果

1) 收发的邮件数据会被他人截取
2) 给 Gmail 等电子邮箱发送邮件时,会提示类似 “ *** 未对此邮件进行加密” 的信息

内容二:给 Postfix 设置 TLS 加密数据传输的方法

2.1 给 Postfix 的配置文件设置 TLS 机密数据传输的参数

# vim /etc/postfix/main.cf

添加以下内容:

......
smtpd_tls_security_level = may
smtp_tls_security_level = may
......


补充:
smtpd_tls_security_level 代表接收邮件的 TLS 安全等级
smtp_tls_security_level 代表发送邮件的 TLS 安全等级
TLS 的常用安全等级有 none、may 和 encrypt :
1) none 表示禁止使用 TLS 加密
2) may 表示可以接收不使用 TLS 加密的邮件,但是会提出支持 TLS 加密的通告。发送邮件时优先发送支持 TLS 加密的邮件
3) encrypt 表示强制使用 TLS 加密

2.2 重启 Postfix 服务

# systemctl restart postfix