gzexe加密shell脚本

很多时候,我们的脚本中涉及的用户名/密码/ip等敏感信息,我们需要使用一些加密方面来屏蔽这些信息,确保我们的系统安全(主要防菜鸟),虽然shc可以实现强大的加密功能,但是他需要另外安装shc软件,比较麻烦,应对一般的加密,个人推荐直接喜用系统自带的gzexe(大部分Linux,unix都有)

[root@xifenfei tmp]# more xifenfei.sh 
#!/usr/bin/ksh
echo 'xifenfei--'`date`

[root@xifenfei tmp]# ./xifenfei.sh 
xifenfei--Tue Mar 6 13:31:35 CST 2012
[root@xifenfei tmp]# ls -l xifenfei.sh
-rwxr-xr-x 1 root root 40 Mar  6 13:30 xifenfei.sh

--加密操作
[root@xifenfei tmp]# gzexe xifenfei.sh 
xifenfei.sh:     -5.0%
[root@xifenfei tmp]# ls -l xifenfei.sh*
-rwxr-xr-x 1 root root 449 Mar  6 13:31 xifenfei.sh
-rwxr-xr-x 1 root root  40 Mar  6 13:30 xifenfei.sh~

--加密后文件内容
[root@xifenfei tmp]# strings xifenfei.sh
#!/bin/sh
skip=14
tmpdir=`/bin/mktemp -d ${TMPDIR:-/tmp}/gzexe.XXXXXXXXXX` || exit 1
prog="${tmpdir}/`echo \"$0\" | sed 's|^.*/||'`"
if /usr/bin/tail -n +$skip "$0" | "/bin"/gzip -cd > "$prog"; then
  /bin/chmod 700 "$prog"
  trap '/bin/rm -rf $tmpdir; exit $res' EXIT
  "$prog" ${1+"$@"}; res=$?
else
  echo "Cannot decompress $0"
  /bin/rm -rf $tmpdir
  exit 1
fi; exit $res
xifenfei.sh
UOHI,IM

这里的xifenfei.sh是加密后文件,xifenfei.sh~是源码文件(加密前文件),只需要运行xifenfie.sh即可实现原脚本功能
优点:在大部分系统上均可运行,不用安装额外软件
缺点:破解容易,放君子不防小人

通过netstat+rmsock查找AIX端口对应进程

rmsock除去不包含文件描述符的套接字。它接受 socket、tcpcb、inpcb、ripcb 或 rawcb 地址并将其转换成套接字地址。然后检查每个进程所有打开的文件以查找套接字的匹配。如果没找到匹配,对该套接字执行异常终止操作,而不考虑套接字 linger 选项的存在。套接字保留的端口号释放。如果发现匹配,文件描述符和主进程状态显示给用户。
命令格式:rmsock Address TypeofAddress

[zwq:/]netstat -Aan|grep 6200|grep LISTEN
f1000e0000307bb0 tcp4       0      0  *.6200             *.*                LISTEN
--f1000e0000307bb0 为系统内核地址

[zwq:/]rmsock f1000e0000307bb0 tcpcb
The socket 0x307808 is being held by proccess 5701830 (ons).

[zwq:/]ps -ef|grep 5701830|grep -v grep
oracle10  5701830  5112098   0   Apr 21      -  7:17 /oracle10/app/product/crs/10.2.0/opmn/bin/ons -d 

shell处理alert日志

每天都检查oracle日志,所以写了一个比较完善的shell,让其自动处理,在运行程序之前,需要在该脚本目录下新建tmp目录

#!/usr/bin/ksh
export LANG=en

#临时目录
tmp_dest=$HOME/check/tmp
#用户名
username=username
#密码
password=password

cd $tmp_dest
sqlplus -s $username/$password<<XFF>/dev/null
set echo on
spool sqlplus.txt
col name format a20
col value format a55
select name,value from v\$parameter where name='background_dump_dest';
spool off
exit
XFF

alert_path_num=$(grep -n "background_dump_dest" $tmp_dest/sqlplus.txt |awk -F":" '{print $1}')
alert_path=$(cat $tmp_dest/sqlplus.txt |sed -n "${alert_path_num}p" | awk -F" " '{print $2}')

first_day=`cat $tmp_dest/first_day.tmp`
d_day=$(date +%e)
if [ $d_day -lt 10 ]
then
###########注意:以下两种方式选择其一###################
#部分系统出现alert日志例如:Tue Aug  7 07:44:59 2012
 last_day=$(date +%a)' '$(date +%b)'.*'$d_day'.*'$(date +%Y)

#部分系统出现alert日志例如:Thu Jun 07 13:56:18 2012
 n_day=`echo $d_day | awk 'gsub(/^ *| *$/,"")'`
 last_day=$(date +%a)' '$(date +%b)'.*0'$n_day'.*'$(date +%Y)

else
 last_day=$(date|cut -c 1-10).*$(date +%Y)
fi
echo $last_day > $tmp_dest/first_day.tmp
first_num=$(grep -n "$first_day" $alert_path/alert_$ORACLE_SID.log |head -1|awk -F":" '{print $1}')
if [ -z "$first_num" ]
then
   first_num=1
fi

#修改$last_day为'.*',表示alert日志结尾
last_num=$(grep -n ".*" $alert_path/alert_$ORACLE_SID.log |tail -1|awk -F":" '{print $1}')

point=1
export=$point

echo "########################## checking alert_log start $first_day ########################## "

sed -n "${first_num},${last_num}p" $alert_path/alert_$ORACLE_SID.log > $tmp_dest/trunc_alert
cat $tmp_dest/trunc_alert|grep ORA-|while read line
do
   line=$(echo "$line"|sed -e 's/\[/\\[/g;s/\]/\\]/g')
   time=$(grep -n "$line" $tmp_dest/trunc_alert | awk -F':' '{print $1}'|wc -l)

if [ "$time" -ge 1 ]
then
   num=$(grep -n "$line" $tmp_dest/trunc_alert|awk -F':' '{print $1}'|tail -1)
   #echo $num
   front_num=$((num-1))
   back_num=$((num+9))

   echo "++++++++++++++++++$point++++++++++++++++++++"
    sed -n "${front_num},${back_num}p" $tmp_dest/trunc_alert
   echo "++++++++++++++++++$point-End++++++++++++++++"
   point=$((point+1))

   flag=1
else
     if [ -z "$time" ]
     then
     flag=0
     fi
fi
done

#rm $tmp_dest/trunc_alert
#rm $tmp_dest/sqlplus.txt

if [ " $flag " -eq 0 ]
   then
   echo "No errors in $first_day !"
fi
echo "########################## checking alert_log end $last_day ########################## "

检查结果

########################## checking alert_log start Fri Jan 27.*2012 ########################## 
++++++++++++++++++1++++++++++++++++++++
  Current log# 3 seq# 918 mem# 0: /opt/oracle/oradata/orcl/mcrm/redo03.log
Tue Jan 31 22:00:22 2012
Errors in file /opt/oracle/admin/mcrm/bdump/mcrm_j001_23329.trc:
ORA-01114: IO error writing block to file 201 (block # 550944)
ORA-27072: File I/O error
Linux-x86_64 Error: 28: No space left on device
Additional information: 4
Additional information: 550944
Additional information: -1
ORA-01114: IO error writing block to file 201 (block # 550922)
ORA-27072: File I/O error
Additional information: 4
Additional information: 550922
++++++++++++++++++1-End++++++++++++++++
++++++++++++++++++2++++++++++++++++++++
Additional information: 550944
Additional information: -1
ORA-01114: IO error writing block to file 201 (block # 550922)
ORA-27072: File I/O error
Additional information: 4
Additional information: 550922
Additional information: 114688
Wed Feb  1 07:24:02 2012
Thread 1 advanced to log sequence 919 (LGWR switch)
  Current log# 1 seq# 919 mem# 0: /opt/oracle/oradata/orcl/mcrm/redo01.log
Wed Feb  1 07:24:02 2012
Errors in file /opt/oracle/admin/mcrm/bdump/mcrm_arc1_3624.trc:
ORA-19504: failed to create file "/opt/oracle/oradata/archivelog/1_918_741262746.dbf"
++++++++++++++++++2-End++++++++++++++++
########################## checking alert_log end Sun Feb 12.*2012########################## 

nmon使用说明

Nmon 工具是 IBM 提供的免费的监控 AIX 系统与 Linux 系统资源的工具。该工具可实时监控系统性能,也可以将服务器的系统资源耗用情况收集起来并输出一个特定的文件,并可利用 excel 分析工具进行数据的统计分析,非常利用 UNIX 或者 Linux 系统的性能数据分析。

1.下载地址
nmon官网
NMON_Analyser官网
本地下载nmon
本地下载nmon_analyser

2.安装nmon
在压缩包中找到相应的版本,上传至服务器,然后授予执行权限

3.主要操作说明

+-HELP---------most-keys-toggle-on/off------------------------------------------+
|h = Help information     q = Quit nmon             0 = reset peak counts       |
|+ = double refresh time  - = half refresh          r = ResourcesCPU/HW/MHz/AIX |
|c = CPU by processor     C=upto 128 CPUs           p = LPAR Stats (if LPAR)    |
|l = CPU avg longer term  k = Kernel Internal       # = PhysicalCPU if SPLPAR   |
|m = Memory & Paging      M = Multiple Page Sizes   P = Paging Space            |
|d = DiskI/O Graphs       D = DiskIO +Service times o = Disks %Busy Map         |
|a = Disk Adapter         e = ESS vpath stats       V = Volume Group stats      |
|^ = FC Adapter (fcstat)  O = VIOS SEA (entstat)    v = Verbose=OK/Warn/Danger  |
|n = Network stats        N=NFS stats (NN for v4)   j = JFS Usage stats         |
|A = Async I/O Servers    w = see AIX wait procs   "="= Net/Disk KB<-->MB       |
|b = black&white mode     g = User-Defined-Disk-Groups (see cmdline -g)         |
|t = Top-Process --->     1=basic 2=CPU-Use 3=CPU(default) 4=Size 5=Disk-I/O    |
|u = Top+cmd arguments    U = Top+WLM Classes       . = only busy disks & procs |
|W = WLM Section          S = WLM SubClasses)                                   |

4.实时监控结果
1)监控内存使用情况

| Memory -----------------------------------------------------------------------|
|          Physical  PageSpace |        pages/sec  In     Out | FileSystemCache |
|% Used       93.8%     34.3%  | to Paging Space   0.0    0.0 | (numperm) 44.3% |
|% Free        6.2%     65.7%  | to File System    0.0  257.9 | Process   18.2% |
|MB Used    1786.0MB   175.8MB | Page Scans        0.0        | System    31.4% |
|MB Free     118.0MB   336.2MB | Page Cycles       0.0        | Free       6.2% |
|Total(MB)  1904.0MB   512.0MB | Page Steals       0.0        |           ------|
|                              | Page Faults     279.9        | Total    100.0% |
|------------------------------------------------------------ | numclient 44.3% |
|Min/Maxperm     361MB( 19%)  1443MB( 76%) <--% of RAM        | maxclient 75.8% |
|Min/Maxfree     960   1088       Total Virtual    2.4GB      | User      58.4% |
|Min/Maxpgahead    2      8    Accessed Virtual    0.9GB 40.1%| Pinned    28.6% |
|-------------------------------------------------------------------------------|

2)监控cpu使用情况

|                           0----------25-----------50----------75----------100 
|CPU User%  Sys% Wait% Idle%|           |            |           |            | 
|  0   0.0   0.0   0.0 100.0|>                                                | 
|  1   0.0   0.0   0.0 100.0|>          |                                       
|  2   0.0   0.0   0.0 100.0|>                                                |
|  3   0.0   0.0   0.0 100.0|>                                                |
|Physical Averages          +-----------|------------|-----------|------------+
|All   0.2   2.5   0.7  96.6|>                                                |
|                           +-----------|------------|-----------|------------+

3)监控进程状态

| Top-Processes-(147) -----Mode=3  [1=Basic 2=CPU 3=Perf 4=Size 5=I/O 6=Cmds]-----------------------------|
|  PID       %CPU     Size      Res     Res      Res     Char    RAM      Paging         Command          |
|            Used       KB      Set     Text     Data     I/O     Use   io   other repage                 |
| 1908868     0.8    30508    29764      132    29632        2    2%      0      3      0 secldapclntd    |
| 2306196     0.7      512      512        0      512        0    0%      1      8      0 trclogio        |
| 2732116     0.6     2520        0        0        0        0    0%      0     33      0 <defunct Zombie>|
|  340036     0.2     1416      296       72      224        0    0%      0      0      0 dtgreet         |

5.监控一段时间性能

-f            spreadsheet output format [note: default -s300 -c288]
optional
 -s <seconds>  between refreshing the screen [default 2]
 -c <number>   of refreshes [default millions]
 -t            spreadsheet includes top processes
具体信息nmon -h

例如:nmon -f -t -s 30 -c 120
-s 30:每30秒进行一次数据采集
-c 120:一共采集120次

6.分析数据
打开nmon analyser,设置宏的安全级别是低 ,之后点击 Analyser NMON data 按钮 输入文件 保存成excel格式即可。

查看Aix进程占用内存大小

内存从大到小排序

-bash-3.00$ ps aux | head -1 ; ps aux | sort -rn +3 | head -10
USER         PID %CPU %MEM   SZ  RSS    TTY STAT    STIME  TIME COMMAND
root     1908868  0.1  2.0 30508 29724      - A      Dec 21 235:34 /usr/sbin/secld
zhldang  2728188  0.0  0.0 1208 1288 pts/15 A    11:20:20  0:00 -bash 
zhldang  1421376  0.0  0.0 2036 1056      - A    11:20:15  0:00 sshd: zhldang@p
zerbo625 2482224  0.0  0.0 1164 1244 pts/24 A    11:04:35  0:00 -bash 
zerbo625 1523730  0.0  0.0 1796 1036      - A    11:04:29  0:00 sshd: zerbo625@
yxq198sm 2429092  0.0  0.0  152  156      - A    12:24:48  0:00 sleep 30 
yxq198sm 1327254  0.0  0.0 1600 1872      - A      Feb 01  0:06 /usr/bin/bsh /u
yanmotia 1274070  0.0  0.0 1164  768 pts/22 A      Dec 23  0:00 -bash 
xinximai 2658402  0.0  0.0 1156  760 pts/83 A      Dec 28  0:00 -bash 
xifengke 2330668  0.0  0.0 1160  756 pts/80 A      Dec 05  0:00 -bash 

内存从大到小排序(详细执行命令)

-bash-3.00$ ps -ealf | head -1 ; ps -ealf | sort -rn +9 | head  -10
       F S      UID     PID    PPID   C PRI NI ADDR    SZ    WCHAN    STIME    TTY  TIME CMD
  240001 A     root  188582       1   0  60 20 2823c400 36708        *   Jan 03      - 676:39 /usr/sbin/secldapclntd 
  240001 A     root 1908868       1   0  60 22 6648400 30508        *   Dec 21      - 235:40 /usr/sbin/secldapclntd 
  240001 A     root  331840   86176   0  60 20 205f8400  4088            Sep 15      - 11:04 /usr/lpp/X11/bin/X -D /usr/lib/X11//rgb -T -force :0 -auth /var/dt/A:0-0xukaa 
  240001 A     root 2216054  233648   0  60 20 142a400  3992 f100060002c9e8c8 11:19:59      -  0:00 sshd: zhldang [priv] 
  240001 A     root 1515620  233648   0  60 20 2075f400  3992 f100060003bb0cc8 12:21:48      -  0:00 sshd: undeadbird [priv] 
  240001 A     root 2719848  233648   0  60 20 916a400  3988 f100060002b068c8 13:07:55      -  0:00 sshd: wangyh0313 [priv] 
  240001 A     root 2003106  233648   0  60 20 3428400  3876 f1000600038f94c8 11:02:58      -  0:00 sshd: intrepid [priv] 
  240001 A     root 2560234  233648   0  60 20 44a8400  3816 f1000600018264c8 11:01:54      -  0:00 sshd: xifenfei [priv] 
  240001 A     root 2846944  233648   0  60 20 22c7b400  3784 f100060003b050c8 11:04:12      -  0:00 sshd: zerbo625 [priv] 
  200001 A undeadbi 2220232 1007670   0  60 20 2355f400  3104 f100060001c2c878 13:03:08  pts/9  0:00 /usr/bin/smitty 

查找某个进程使用内存

-bash-3.00$ ps aux | head -1 ; ps aux | grep xifenfei
USER         PID %CPU %MEM   SZ  RSS    TTY STAT    STIME  TIME COMMAND
xifenfei 2494532  0.0  0.0 1836 1044      - A    11:02:05  0:00 sshd: xifenfei@
xifenfei 2666546  0.0  0.0 1148 1228 pts/20 A    11:02:10  0:00 -bash 
root     2560234  0.0  0.0 3816 3024      - A    11:01:54  0:00 sshd: xifenfei 
xifenfei 2220230  0.0  0.0  912  940 pts/20 A    13:03:06  0:00 ps aux 
xifenfei 1310908  0.0  0.0  228  240 pts/20 A    13:03:06  0:00 grep xifenfei 

查找某个进程使用内存(详细执行命令)

-bash-3.00$ ps -ealf | head -1 ;ps -ealf|grep xifenfei
       F S      UID     PID    PPID   C PRI NI ADDR    SZ    WCHAN    STIME    TTY  TIME CMD
   40001 A xifenfei 2494532 2560234   0  60 20 37575400  1836          11:02:05      -  0:00 sshd: xifenfei@pts/20 
  200001 A xifenfei 2510946 2666546   1  60 20 14045400   960          12:57:25 pts/20  0:00 ps -ealf 
  200001 A xifenfei 2543730 2666546   0  60 20 10cc6400   228 f100010017976ca0 12:57:25 pts/20  0:00 grep xifenfei 
  240001 A     root 2560234  233648   0  60 20 44a8400  3816 f1000600018264c8 11:01:54      -  0:00 sshd: xifenfei [priv] 
Posted in AIX |