└── ant /ant: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ######################################## 3 | # Ant # 4 | # Linux Server Probe Script # 5 | # author: ubug # 6 | # date: 2018/01/20 # 7 | ######################################## 8 | 9 | # export path 10 | export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/bin:/sbin/:$PATH 11 | # create result dir 12 | RESULT_DIR=/home/`whoami`/ant_report 13 | mkdir -p ${RESULT_DIR} 14 | RESULT_FILE=${RESULT_DIR}/result.ant 15 | RESULT_TREE=${RESULT_DIR}/tree.ant 16 | RESULT_KEY=${RESULT_DIR}/keyword.ant 17 | 18 | if [ -f "$RESULT_FILE" ]; then 19 | rm -rf ${RESULT_FILE} 20 | fi 21 | 22 | if [ -f "$RESULT_TREE" ]; then 23 | rm -rf ${RESULT_TREE} 24 | fi 25 | 26 | # cat system version 27 | SYS_VER=`cat /proc/version` 28 | sys_debian="Debian" 29 | SSH_DIR=~/.ssh/ 30 | CON_DIR=/var/spool/cron/crontabs/ 31 | showip=`ip route show | grep -n 'eth0\s*proto\s*kernel\s*scope\s*link\s*src' | sed 's/^.*src //g' | sed s/metric.*$//g` 32 | userinfo=`for i in $(cut -d":" -f1 /etc/passwd 2>/dev/null);do id $i;done 2>/dev/null` 33 | 34 | # sensitive data 35 | a_dir=("/etc/" "/opt/" "/var/" "/home/" "/root/" "/usr/") 36 | # a_file=("redis.conf" "mongodb.conf" "server.xml" "vsftpd.conf" "ldap.conf" "nginx.conf" "apache2.conf" "smb.conf") 37 | 38 | # banner 39 | echo -e "\033[36m ------------------------------- \033[0m" 40 | echo -e "\033[31m _ _ _ _____ \033[0m" 41 | echo -e "\033[31m / \ | \ | | |_ _| \033[0m" 42 | echo -e "\033[31m / _ \ | \| | | | \033[0m" 43 | echo -e "\033[31m / ___ \ | |\ | | | \033[0m" 44 | echo -e "\033[31m /_/ \_\ |_| \_| |_| \033[0m" 45 | echo 46 | echo -e "\033[31m Linux Server Probe Script \033[0m" 47 | echo -e "\033[31m Hostname:\033[0m \033[32m`hostname` \033[0m" 48 | echo -e "\033[31m User:\033[0m \033[32m`whoami` \033[0m" 49 | echo -e "\033[31m IP:\033[0m \033[32m${showip} \033[0m" 50 | echo -e "\033[31m Report:\033[0m \033[32m/home/`whoami`/ant_report \033[0m" 51 | echo -e "\033[31m Help:\033[0m \033[32muse -h \033[0m" 52 | echo -e "\033[36m ------------------------------- \033[0m" 53 | 54 | #usage 55 | usage() { echo " Usage: $0 [-s] [-a ] [-t ] [-k ]" 1>&2; exit 1; } 56 | 57 | # check system 58 | funsys() 59 | { 60 | os=`uname -o` 61 | os_re=`uname -n` 62 | os_ke=`uname -rv` 63 | ver=$(echo $SYS_VER | grep "${sys_debian}") 64 | if [[ "$ver" != "" ]] 65 | then 66 | echo -e " OS: \033[32m${os} ${os_re}\033[0m" 67 | echo -e " Kernel: \033[32m${os_ke}\033[0m" 68 | echo -e "\033[36m ------------------------------- \033[0m" 69 | echo -e "\033[31m Ant Start at \033[0m`date`" 70 | echo -e "\033[36m ------------------------------- \033[0m" 71 | else 72 | echo -e " OS: \033[32m${os} ${os_re}\033[0m" 73 | echo -e " Kernel: \033[32m${os_ke}\033[0m" 74 | echo -e "\033[36m ------------------------------- \033[0m" 75 | echo -e "\033[31m Ant Start at `date`... \033[0m" 76 | echo -e "\033[36m ------------------------------- \033[0m" 77 | fi 78 | } 79 | 80 | # dir struct 81 | funtree() 82 | { 83 | if command -v tree > /dev/null 2>&1; then 84 | if [[ -n $1 ]]; then 85 | for i in ${a_dir[@]} 86 | do 87 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_TREE 88 | echo -e "\033[32m${i}\033[0m" >> $RESULT_TREE 89 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_TREE 90 | tree -L $1 ${i} >> $RESULT_TREE 2>&1 91 | done 92 | if [[ $? -eq 0 ]] 93 | then 94 | echo >> $RESULT_FILE 95 | echo -e "\033[31m Ant\033[0m directory structure info ...... \033[32mOK\033[0m" 96 | else 97 | echo -e "\033[31m Ant\033[0m directory structure info ...... \033[31mFAILED\033[0m" 98 | fi 99 | else 100 | for i in ${a_dir[@]} 101 | do 102 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_TREE 103 | echo -e "\033[32m${i}\033[0m" >> $RESULT_TREE 104 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_TREE 105 | tree ${i} >> $RESULT_TREE 2>&1 106 | done 107 | if [[ $? -eq 0 ]] 108 | then 109 | echo >> $RESULT_FILE 110 | echo -e "\033[31m Ant\033[0m directory structure info ...... \033[32mOK\033[0m" 111 | else 112 | echo -e "\033[31m Ant\033[0m directory structure info ...... \033[31mFAILED\033[0m" 113 | fi 114 | fi 115 | else 116 | for s in ${a_dir[@]} 117 | do 118 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_TREE 119 | echo -e "\033[32m${s}\033[0m" >> $RESULT_TREE 120 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_TREE 121 | ls -R -t -s -a ${s} >> tree.ant 2>&1 122 | done 123 | if [[ $? -eq 0 ]] 124 | then 125 | echo >> $RESULT_FILE 126 | echo -e "\033[31m Ant\033[0m directory structure info ...... \033[32mOK\033[0m" 127 | else 128 | echo -e "\033[31m Ant\033[0m directory structure info ...... \033[31mFAILED\033[0m" 129 | fi 130 | fi 131 | } 132 | 133 | # find key 134 | funkey() 135 | { 136 | if [[ -n $1 ]] 137 | then 138 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_KEY 139 | echo -e "\033[32mFind Keyword Info\033[0m" >> $RESULT_KEY 140 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_KEY 141 | find / -maxdepth 4 -name *.conf -type f -exec grep -Hn $1 {} \; >> $RESULT_KEY 2>&1 142 | find / -maxdepth 4 -name *.ini -type f -exec grep -Hn $1 {} \; >> $RESULT_KEY 2>&1 143 | find / -maxdepth 4 -name *.log -type f -exec grep -Hn $1 {} \; >> $RESULT_KEY 2>&1 144 | if [[ $? -eq 0 ]] 145 | then 146 | echo >> $RESULT_KEY 147 | echo -e "\033[31m Ant\033[0m find keyword info ...... \033[32mOK\033[0m" 148 | else 149 | echo -e "\033[31m Ant\033[0m find keyword info ...... \033[31mFAILED\033[0m" 150 | fi 151 | else 152 | : 153 | fi 154 | 155 | } 156 | 157 | # common mode 158 | funsip() 159 | { 160 | # release information 161 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 162 | echo -e "\033[32mRelease Info\033[0m" >> $RESULT_FILE 163 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 164 | cat /etc/*-release >> $RESULT_FILE 2>&1 165 | if [[ $? -eq 0 ]] 166 | then 167 | echo >> $RESULT_FILE 168 | echo -e "\033[31m Ant\033[0m release info ...... \033[32mOK\033[0m" 169 | else 170 | echo -e "\033[31m Ant\033[0m release info ...... \033[31mFAILED\033[0m" 171 | fi 172 | 173 | # ifconfig 174 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 175 | echo -e "\033[32mIP Address Info\033[0m" >> $RESULT_FILE 176 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 177 | ip address show >> $RESULT_FILE 2>&1 178 | if [[ $? -eq 0 ]] 179 | then 180 | echo >> $RESULT_FILE 181 | echo -e "\033[31m Ant\033[0m ip address info ...... \033[32mOK\033[0m" 182 | else 183 | echo -e "\033[31m Ant\033[0m ip address info ...... \033[31mFAILED\033[0m" 184 | fi 185 | 186 | # arp 187 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 188 | echo -e "\033[32mArp Info\033[0m" >> $RESULT_FILE 189 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 190 | arp -v >> $RESULT_FILE 2>&1 191 | if [[ $? -eq 0 ]] 192 | then 193 | echo >> $RESULT_FILE 194 | echo -e "\033[31m Ant\033[0m arp info ...... \033[32mOK\033[0m" 195 | else 196 | echo -e "\033[31m Ant\033[0m arp info ...... \033[31mFAILED\033[0m" 197 | fi 198 | 199 | # route 200 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 201 | echo -e "\033[32mRoute Info\033[0m" >> $RESULT_FILE 202 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 203 | route -v >> $RESULT_FILE 2>&1 204 | if [[ $? -eq 0 ]] 205 | then 206 | echo >> $RESULT_FILE 207 | echo -e "\033[31m Ant\033[0m route info ...... \033[32mOK\033[0m" 208 | else 209 | echo -e "\033[31m Ant\033[0m route info ...... \033[31mFAILED\033[0m" 210 | fi 211 | 212 | # /etc/passwd 213 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 214 | echo -e "\033[32mSystem Passwd File Info\033[0m" >> $RESULT_FILE 215 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 216 | if [ "$userinfo" ] 217 | then 218 | echo -e "\n$userinfo" >> $RESULT_FILE 2>&1 219 | else 220 | : 221 | fi 222 | hashesinpasswd=`grep -v '^[^:]*:[x]' /etc/passwd 2>/dev/null` 223 | if [ "$hashesinpasswd" ] 224 | then 225 | echo -e "\e[00;33mIt looks like we have password hashes in /etc/passwd!\e[00m\n$hashesinpasswd" >> $RESULT_FILE 2>&1 226 | else 227 | : 228 | fi 229 | if [[ $? -eq 0 ]] 230 | then 231 | echo >> $RESULT_FILE 232 | echo -e "\033[31m Ant\033[0m /etc/passwd ...... \033[32mOK\033[0m" 233 | else 234 | echo -e "\033[31m Ant\033[0m /etc/passwd ...... \033[31mFAILED\033[0m" 235 | fi 236 | 237 | # /etc/shadow 238 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 239 | echo -e "\033[32mSystem Shadow File Info\033[0m" >> $RESULT_FILE 240 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 241 | cat /etc/shadow >> $RESULT_FILE 2>&1 242 | if [[ $? -eq 0 ]] 243 | then 244 | echo >> $RESULT_FILE 245 | echo -e "\033[31m Ant\033[0m /etc/shadow ...... \033[32mOK\033[0m" 246 | else 247 | echo -e "\033[31m Ant\033[0m /etc/shadow ...... \033[31mFAILED\033[0m" 248 | fi 249 | 250 | # /etc/sudoers 251 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 252 | echo -e "\033[32mSystem Sudoers File Info\033[0m" >> $RESULT_FILE 253 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 254 | cat /etc/sudoers 2>/dev/null | grep -v -e '^$' | grep -v "#" >> $RESULT_FILE 2>&1 255 | if [[ $? -eq 0 ]] 256 | then 257 | echo >> $RESULT_FILE 258 | echo -e "\033[31m Ant\033[0m /etc/sudoers ...... \033[32mOK\033[0m" 259 | else 260 | echo -e "\033[31m Ant\033[0m /etc/sudoers ...... \033[31mFAILED\033[0m" 261 | fi 262 | 263 | # password policy information 264 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 265 | echo -e "\033[32mPassword policy Info\033[0m" >> $RESULT_FILE 266 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 267 | cat /etc/login.defs 2>/dev/null | grep -v -e '^$' | grep -v "#" >> $RESULT_FILE 2>&1 268 | if [[ $? -eq 0 ]] 269 | then 270 | echo >> $RESULT_FILE 271 | echo -e "\033[31m Ant\033[0m /etc/login.defs ...... \033[32mOK\033[0m" 272 | else 273 | echo -e "\033[31m Ant\033[0m /etc/login.defs ...... \033[31mFAILED\033[0m" 274 | fi 275 | 276 | # /root 277 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 278 | echo -e "\033[32mChecks root home directory Info\033[0m" >> $RESULT_FILE 279 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 280 | ls -ahl /root/ >> $RESULT_FILE 2>&1 281 | if [[ $? -eq 0 ]] 282 | then 283 | echo >> $RESULT_FILE 284 | echo -e "\033[31m Ant\033[0m root home directory ...... \033[32mOK\033[0m" 285 | else 286 | echo -e "\033[31m Ant\033[0m root home directory ...... \033[31mFAILED\033[0m" 287 | fi 288 | 289 | # netstat 290 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 291 | echo -e "\033[32mNet Status\033[0m" >> $RESULT_FILE 292 | echo -e "\033[36m------------------TCP---PORT------------------------\033[0m" >> $RESULT_FILE 293 | netstat -antp >> $RESULT_FILE 2>&1 294 | echo -e "\033[36m------------------UDP---PORT------------------------\033[0m" >> $RESULT_FILE 295 | netstat -anup >> $RESULT_FILE 2>&1 296 | if [[ $? -eq 0 ]] 297 | then 298 | echo >> $RESULT_FILE 299 | echo -e "\033[31m Ant\033[0m netstat ...... \033[32mOK\033[0m" 300 | else 301 | echo -e "\033[31m Ant\033[0m netstat ...... \033[31mFAILED\033[0m" 302 | fi 303 | 304 | # process 305 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 306 | echo -e "\033[32mProcess Info\033[0m" >> $RESULT_FILE 307 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 308 | ps aux >> $RESULT_FILE 2>&1 309 | if [[ $? -eq 0 ]] 310 | then 311 | echo >> $RESULT_FILE 312 | echo -e "\033[31m Ant\033[0m process info ...... \033[32mOK\033[0m" 313 | else 314 | echo -e "\033[31m Ant\033[0m process info ...... \033[31mFAILED\033[0m" 315 | fi 316 | 317 | # services 318 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 319 | echo -e "\033[32mServices Info\033[0m" >> $RESULT_FILE 320 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 321 | cat /etc/services 2>/dev/null | grep -v "#" >> $RESULT_FILE 2>&1 322 | if [[ $? -eq 0 ]] 323 | then 324 | echo >> $RESULT_FILE 325 | echo -e "\033[31m Ant\033[0m services info ...... \033[32mOK\033[0m" 326 | else 327 | echo -e "\033[31m Ant\033[0m services info ...... \033[31mFAILED\033[0m" 328 | fi 329 | 330 | # bash env 331 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 332 | echo -e "\033[32mBash Env\033[0m" >> $RESULT_FILE 333 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 334 | echo -e "\033[32mcurrent user \033[0m" >> $RESULT_FILE 335 | echo -e "\033[36m-----------------------\033[0m" >> $RESULT_FILE 336 | envinfo=`env 2>/dev/null | grep -v 'LS_COLORS' 2>/dev/null` 337 | if [ "$envinfo" ] 338 | then 339 | echo -e "\n$envinfo" >> $RESULT_FILE 2>&1 340 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 341 | else 342 | : 343 | fi 344 | cat ~/.bashrc 2>/dev/null | grep -v -e '^$' | grep -v "#" >> $RESULT_FILE 2>&1 345 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 346 | echo $PATH >> $RESULT_FILE 2>&1 347 | echo -e "\033[36m-----------------------\033[0m" >> $RESULT_FILE 348 | echo -e "\033[32msystem env profile \033[0m" >> $RESULT_FILE 349 | echo -e "\033[36m-----------------------\033[0m" >> $RESULT_FILE 350 | cat /etc/profile 2>/dev/null | grep -v -e '^$' | grep -v "#" >> $RESULT_FILE 2>&1 351 | if [[ $? -eq 0 ]] 352 | then 353 | echo >> $RESULT_FILE 354 | echo -e "\033[31m Ant\033[0m bash env ...... \033[32mOK\033[0m" 355 | else 356 | echo -e "\033[31m Ant\033[0m bash env ...... \033[31mFAILED\033[0m" 357 | fi 358 | 359 | # command history 360 | HISTFILE=~/.bash_history 361 | export HISTTIMEFORMAT="%Y-%m-%d:%H-%M-%S:"`whoami`": " 362 | set -o history 363 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 364 | echo -e "\033[32mCommand History\033[0m" >> $RESULT_FILE 365 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 366 | history >> $RESULT_FILE 2>&1 367 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 368 | cat $HISTFILE >> $RESULT_FILE 2>&1 369 | if [[ $? -eq 0 ]] 370 | then 371 | echo >> $RESULT_FILE 372 | echo -e "\033[31m Ant\033[0m command history ...... \033[32mOK\033[0m" 373 | else 374 | echo -e "\033[31m Ant\033[0m command history ...... \033[31mFAILED\033[0m" 375 | fi 376 | 377 | # user login info 378 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 379 | echo -e "\033[32mLogin Info\033[0m" >> $RESULT_FILE 380 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 381 | w >> $RESULT_FILE 2>&1 382 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 383 | last >> $RESULT_FILE 2>&1 384 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 385 | lastlog >> $RESULT_FILE 2>&1 386 | if [[ $? -eq 0 ]] 387 | then 388 | echo >> $RESULT_FILE 389 | echo -e "\033[31m Ant\033[0m login info ...... \033[32mOK\033[0m" 390 | else 391 | echo -e "\033[31m Ant\033[0m login info ...... \033[31mFAILED\033[0m" 392 | fi 393 | 394 | # hosts 395 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 396 | echo -e "\033[32mHosts Info\033[0m" >> $RESULT_FILE 397 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 398 | find /etc /home -type f \( -name "*.rhosts" -o -name "*.equiv" \) >> $RESULT_FILE 2>&1 399 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 400 | cat /etc/hosts >> $RESULT_FILE 2>&1 401 | if [[ $? -eq 0 ]] 402 | then 403 | echo >> $RESULT_FILE 404 | echo -e "\033[31m Ant\033[0m hosts info ...... \033[32mOK\033[0m" 405 | else 406 | echo -e "\033[31m Ant\033[0m hosts info ...... \033[31mFAILED\033[0m" 407 | fi 408 | 409 | # fstab 410 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 411 | echo -e "\033[32mMount Info\033[0m" >> $RESULT_FILE 412 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 413 | cat /etc/fstab >> $RESULT_FILE 2>&1 414 | if [[ $? -eq 0 ]] 415 | then 416 | echo >> $RESULT_FILE 417 | echo -e "\033[31m Ant\033[0m /etc/fstab ...... \033[32mOK\033[0m" 418 | else 419 | echo -e "\033[31m Ant\033[0m /etc/fstab ...... \033[31mFAILED\033[0m" 420 | fi 421 | 422 | # ssh authkey config 423 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 424 | echo -e "\033[32mSSH Auth Key Config\033[0m" >> $RESULT_FILE 425 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 426 | sshfiles=`find / \( -name "id_dsa*" -o -name "id_rsa*" -o -name "known_hosts" -o -name "authorized_hosts" -o -name "authorized_keys" \) -exec ls -la {} 2>/dev/null \;` 427 | if [ "$sshfiles" ]; then 428 | echo -e "\e[00;31mSSH keys/host information found in the following locations:\e[00m\n$sshfiles" >> $RESULT_FILE 2>&1 429 | echo -e "\n" >> $RESULT_FILE 2>&1 430 | else 431 | : 432 | fi 433 | if [ -d "${SSH_DIR}" ] 434 | then 435 | for i in `ls -1 ${SSH_DIR} >> $RESULT_FILE 2>&1` 436 | do 437 | cat ${SSH_DIR}${i} >> $RESULT_FILE 2>&1 438 | done 439 | if [[ $? -eq 0 ]] 440 | then 441 | echo >> $RESULT_FILE 442 | echo -e "\033[31m Ant\033[0m ssh auth key ...... \033[32mOK\033[0m" 443 | else 444 | echo -e "\033[31m Ant\033[0m ssh auth key ...... \033[31mFAILED\033[0m" 445 | fi 446 | else 447 | echo -e "\033[31m Ant\033[0m ssh auth key ...... \033[31mFAILED\033[0m" 448 | echo -e "\033[31m.ssh No such file or directory\033[0m" >> $RESULT_FILE 449 | fi 450 | 451 | # crontab 452 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 453 | echo -e "\033[32mCrontab Config\033[0m" >> $RESULT_FILE 454 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 455 | ls -al /etc/cron* >> $RESULT_FILE 2>&1 456 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 457 | cat /etc/rc.local >> $RESULT_FILE 2>&1 458 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 459 | cut -d ":" -f 1 /etc/passwd | xargs -n1 crontab -l -u >> $RESULT_FILE 2>&1 460 | echo -e "\033[36m----------------------------------------------------\033[0m" >> $RESULT_FILE 461 | if [ -d "${CON_DIR}" ] 462 | then 463 | for i in `ls -1 ${CON_DIR} >> $RESULT_FILE 2>&1` 464 | do 465 | cat ${CON_DIR}${i} >> $RESULT_FILE 2>&1 466 | done 467 | if [[ $? -eq 0 ]] 468 | then 469 | echo >> $RESULT_FILE 470 | echo -e "\033[31m Ant\033[0m crontab ...... \033[32mOK\033[0m" 471 | else 472 | echo -e "\033[31m Ant\033[0m crontab ...... \033[31mFAILED\033[0m" 473 | fi 474 | else 475 | echo -e "\033[31m Ant\033[0m crontab ...... \033[31mFAILED\033[0m" 476 | echo -e "\033[31m No such file or directory\033[0m" >> $RESULT_FILE 477 | fi 478 | 479 | } 480 | 481 | # getopts 482 | # ./ant -t 10 -s 483 | while getopts sht:k:a ARGS 484 | do 485 | case $ARGS in 486 | s) 487 | # common mode 488 | funsys 489 | funsip 490 | ;; 491 | a) 492 | # all 493 | funsys 494 | funsip 495 | funtree 496 | funkey 497 | ;; 498 | k) 499 | #key 500 | funsys 501 | funkey $OPTARG 502 | ;; 503 | t) 504 | # dir struct 505 | funsys 506 | funtree $OPTARG 507 | ;; 508 | h) 509 | # help 510 | echo " Common Mode: -s" 511 | echo " Full Mode: -a" 512 | echo " DirTree Mode: -t" 513 | echo " Find Keyword Mode: -k" 514 | usage 515 | ;; 516 | *) 517 | # param error 518 | echo " $1 is not an option" 519 | usage 520 | ;; 521 | esac 522 | done 523 | --------------------------------------------------------------------------------