Centos下对Shell.sh脚本加密

shc是一个加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件,用shell脚本对系统进行自动化维护,简单,便捷而且可移植性好.,但shell脚本是可读写的,很有可能会泄露敏感信息,如用户名,密码,路径,IP等.,同样,在shell脚本运行时会也泄露敏感信息.这就很好的解决了上述问题.

shc 安装

yum -y install shc

如果yum不能安装,请移步官方下载rpm包 http://pkgs.repoforge.org/shc/

使用方法:

shc -r -f script-name 注意:要有-r选项, -f 后跟要加密的脚本名.

运行后会生成两个文件,script-name.x 和 script-name.x.c

script-name.x是加密后的可执行的二进制文件.

./script-name 即可运行.

script-name.x.c是生成script-name.x的原文件(c语言)

shell中的日期时间处理

在Shell中的一些常见的处理时间的方法,这里记录一下。

$ date                        #获得当前日期
Sat Sep  6 23:31:48 CST 2014

$ date +%Y%m%d                #获得当前日期
20140906

$ date +%Y.%m.%d-%H:%M:%S     #获得当前日期
2014.09.06-23:32:56

$ date -d "-1 week" +%Y%m%d   #获取上周今日的日期
20140830

$ date -d "+3 day" +%Y%m%d    #获得3天后的日期
20140909

$ date -d "+1 month" +%Y%m%d  #获得1个月后的日期
20141006

$ date -d "+2 month 20131231" +%Y%m%d  #获得2013年12月31日以后2个月的日期
20140303

data命令参数详解

%% 输出%符号
%a 当前域的星期缩写 (Sun..Sat)
%A 当前域的星期全写 (Sunday..Saturday)
%b 当前域的月份缩写(Jan..Dec)
%B 当前域的月份全称 (January..December)
%c 当前域的默认时间格式 (Sat Nov 04 12:02:33 EST 1989)
%C n百年 [00-99]
%d 两位的天 (01..31)
%D 短时间格式 (mm/dd/yy)
%e 短格式天 ( 1..31)
%F 文件时间格式 same as %Y-%m-%d
%h same as %b
%H 24小时制的小时 (00..23)
%I 12小时制的小时 (01..12)
%j 一年中的第几天 (001..366)
%k 短格式24小时制的小时 ( 0..23)
%l 短格式12小时制的小时 ( 1..12)
%m 双位月份 (01..12)
%M 双位分钟 (00..59)
%n 换行
%N 十亿分之一秒(000000000..999999999)
%p 大写的当前域的上下午指示 (blank in many locales)
%P 小写的当前域的上下午指示 (blank in many locales)
%r 12小时制的时间表示(时:分:秒,双位) time, 12-hour (hh:mm:ss [AP]M)
%R 24小时制的时间表示 (时:分,双位)time, 24-hour (hh:mm)
%s 自基础时间 1970-01-01 00:00:00 到当前时刻的秒数(a GNU extension)
%S 双位秒 second (00..60);
%t 横向制表位(tab)
%T 24小时制时间表示(hh:mm:ss)
%u 数字表示的星期(从星期一开始 1-7)
%U 一年中的第几周星期天为开始 (00..53)
%V 一年中的第几周星期一为开始 (01..53)
%w 一周中的第几天 星期天为开始 (0..6)
%W 一年中的第几周星期一为开始 (00..53)
%x 本地日期格式 (mm/dd/yy)
%X 本地时间格式 (%H:%M:%S)
%y 两位的年(00..99)
%Y 年 (1970…)
%Z : 显示时区

=====================================
批量输出一段日期内的每一天

#!/bin/sh
#riqizizeng
datebeg=$1
dateend=$2
#read datebeg
#read dateend
beg_s=`date -d "$datebeg" +%s`
end_s=`date -d "$dateend" +%s`
while [ "$beg_s" -le "$end_s" ]
do
    date -d @$beg_s +"%Y%m%d"
    beg_s=$((beg_s+86400))
done

以下是运行结果

./every.sh 20120130 20120401
20120130
20120131
20120201
20120202
20120203
20120204
……
……
……
20120327
20120328
20120329
20120330
20120331
20120401

Linux系统自带的密码生成器——mkpasswd

Linux系统有一个自带的生成密码的命令,这个命令异常强悍,可以帮助我们生成随机密码,要知道,现在的黑客无处不在,想一个难猜的密码还真的下点功夫,有了这个密码生成工具,就可以为管理员节省好多脑细胞啊,下面看下这个命令的使用:

[root@centos6 game-dir]# mkpasswd
JI>s64tyv
 
[root@centos6 game-dir]# mkpasswd -l 12
e/Hwyw8Kied6
 
[root@centos6 game-dir]# mkpasswd -l 12 -d 3
zas4Ery+5K8l
 
[root@centos6 game-dir]# mkpasswd -l 12 -c 4
ff9bT7b}npmM
 
[root@centos6 game-dir]# mkpasswd -l 12 -C 4
x3TwqtSKh}2T
 
[root@centos6 game-dir]# mkpasswd -l 12 -s 4
px}[aO8cF':8
 
[root@centos6 game-dir]# mkpasswd -l 18 -s 4 -c 4 -C 4
;.8zW3dGiwmb@dyWO&

下面来简单介绍一下常用的参数含义:

usage: mkpasswd [args] [user]
 where arguments are:
-l #      (length of password, default = 7)
                   指定密码的长度,默认是7位数
-d #      (min # of digits, default = 2)
                   指定密码中数字最少位数,默认是2位
-c #      (min # of lowercase chars, default = 2)
                   指定密码中小写字母最少位数,默认是2位
-C #      (min # of uppercase chars, default = 2)
                   指定密码中大写字母最少位数,默认是2位
-s #      (min # of special chars, default = 1)
                   指定密码中特殊字符最少位数,默认是1位
-v        (verbose, show passwd interaction)
                   这个参数在实验的时候报错,具体不知道。

Debian下使用apt-spy选择最快的源

apt-spy感觉类似于centos下的fastestmirror插件,自动查找当前最快的源。
首先安装

apt-get install apt-spy -y 

安装完成后就可以使用apt-spy了,首先需要下载软件源列表。

apt-spy update 

然后就可以测试速度了:

apt-spy -d stable -a asia 

这里有两个参数:
-d stable 说明要Debian的stable分支的软件源,Debian共有三个分支,分别是stable(稳定版)testing(测试版)unstable(开发版)
-a asia 说明你要测试的地区,一般你在哪就填哪,地理距离进的服务器速度一般都比较快~~

等待apt-spy逐个测速就可以了,然后你的/etc/apt/source.list就被自动更新了,这也是为什么命令需要root权限的原因~~
结果保存在/etc/apt/sources.list.d/apt-spy.list,可手动替换到/etc/apt/sources.list
如果想探索其他参数,可以输入

apt-spy --help

如何查看Linux系统中的 LABEL/UUID

使用 blkid 命令:
用法(LABEL):

# blkid -s LABEL
/dev/hda3: LABEL="/"
/dev/hda1: LABEL="/boot1"
/dev/hda2: LABEL="SWAP-hda2"
/dev/hdc1: LABEL="/boot9"
/dev/hdc2: LABEL="/vm"
/dev/hdc3: LABEL="/home9"
/dev/hdc5: LABEL="/9"
/dev/hdc6: LABEL="/var/ftp/pub9"
/dev/hdc8: LABEL="/boot"
/dev/hdc9: LABEL="/1"

用法(UUID):

# blkid -s UUID
/dev/hda3: UUID="440612e0-9cea-4751-8e59-07ebffc589c2"
/dev/hda1: UUID="027ecc62-d346-411d-ae6c-c3eaa87fb195"
/dev/hdc1: UUID="fdbe6b52-755f-4e14-b970-b3be01543acc"
/dev/hdc2: UUID="e61f4197-5f00-4f4f-917c-290922a85339"
/dev/hdc3: UUID="06679282-4973-476a-98ae-4986f504816f"
/dev/hdc5: UUID="51f7e9a4-5154-4e29-a7a6-208417290b85"
/dev/hdc6: UUID="4bf4855e-96b9-43c4-89d7-b3d0087560e1"
/dev/hdc8: UUID="5a15d9d7-5a17-4d71-a2b6-eb978e6905cd"
/dev/hdc9: UUID="dc348785-9acb-4484-b52a-da000ffba601"

改变LABEL名称:
e2label 设备 新label,例如把 /dev/hda1 命名为 /boot:

e2label /dev/hda1 /boot

在mount 命令中使用 LABEL/UUID

mount LABEL=/boot1 /boot

mount UUID="51f7e9a4-5154-4e29-a7a6-208417290b85" /mnt/

在 /etc/fstab 中使用 LABEL/UUID
档案/etc/fstab

LABEL=/                                        /        ext3    defaults   1   1
LABEL=/boot1                                   /boot    ext3    defaults   1   2
UUID="e61f4197-5f00-4f4f-917c-290922a85339"   /usr     ext3    defaults   1   12