|  | 
 
 发表于 2005-2-24 15:26:17
|
显示全部楼层 
| 不错的东东,我重新整理了一下,加了几个。   
 网络相关:
 
 [code:1]1、关于arp协议:
 关于arp命令,注意其中的Flags,如果是C,表示是动态的,但是如果使用arp -s 来绑定的话则是显示M,是静态
 所以后边每个侦都需要加入填充字符以达到以太网的最小长度要求60字节。
 大多数的bsd实现把完成tcp连接请求的时间限制设置为75秒。
 1byte=8bit
 
 2、关于tcpdump
 想输出点分十进制:tcpdump -n ***
 想输出mac地址:tcpdump -e ***
 抓到目标为A的包:tcpdump dst A
 问题:如何使用Tcpdump显示抓到的包的长度,因为以太网包的最小长度为60,用packetyzer抓到48
 
 
 3、Linux的路由重定向
 /proc/sys/net/ipv4/conf/uall/send_redirects
 /proc/sys/net/ipv4/conf/default/send_redirects
 /proc/sys/net/ipv4/conf/eth0/send_redirects
 
 4、如何修改Linux网卡的mtu
 (1) ifconfig eth0 mtu 1400        (使用系统都带的ifconfig)
 (2) ip link set eth0 mtu 1400     (使用系统都带的ip)
 
 5、以Tomcat用户来启动tomcat
 #su - tomcat -c "/usr/local/tomcat"
 但是难道这样不需要输入密码吗?
 
 6、修改网卡MAC地址:
 #ifconfig eth0 down
 #ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
 #ifconfig eth0 up
 
 7、在Linux上释放所有arp:
 #arp -d -a
 
 8、Linux上添加路由
 添加到某网段的路由:route add -net desIP rouIP dev eth0
 添加到某ip的路由:  route add -host desIP rouIP dev eth0
 
 
 9、关于TCP_WRAPPERS
 这个跟xinetd有关系...而现在一般使用standalone模式...
 
 10、关于dns的查询使用办法
 nslookup
 host
 dig
 
 11、关于ssh
 scp
 制造密钥
 
 12、设置网卡为混杂模式
 #ifconfig eth0 promisc
 
 13、关于ip层的路由
 路由器在查找路由表的时候,路由表有三种
 1、特定主机 2、特定网络 3、默认路由
 优先级依次递减,主机路由高于网络路由,网络路由高于默认路由,同时也是由掩码最大匹配来决定优先级
 
 13、修改Linux网卡为混杂模式以sniff
 #ifconfig eth0 promisc
 虽然说是可以抓获所有的包,但是这种是否捕获或分析抓到的包是由os决定是否接收的,也就是说并不能真正的...
 
 14、关闭Linux Kernel的路由重定向功能
 在/etc/sysctl.conf中加入如下行:
 net.ipv4.conf.all.send_redirects = 0
 net.ipv4.conf.default.send_redirects = 0
 net.ipv4.conf.eth0.send_redirects = 0
 net.ipv4.conf.eth1.send_redirects = 0
 
 15、关于netstat -rn中的flags的解释
 U 该路由可以使用。
 G 该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地是直接相连的。
 H 该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。如果没有设置该
 标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号,或者网
 络号与子网号的组合。
 D 该路由是由重定向报文创建的。
 M 该路由已被重定向报文修改。
 S 该路由是静态路由
 
 16.查询计算机的NETBIOS名
 nbtscan -r 192.168.1.0/24
 Scans the whole C-class network.
 nbtscan 192.168.1.25-137
 Scans a range from 192.168.1.25 to 192.168.1.137
 nbtscan -v -s : 192.168.1.0/24
 Scans C-class network. Prints results in script-friendly
 format using colon as field separator.
 Produces output like that:
 192.168.0.1:NT_SERVER:00U
 192.168.0.1:MY_DOMAIN:00G
 192.168.0.1:ADMINISTRATOR:03U
 192.168.0.2:OTHER_BOX:00U
 ...
 nbtscan -f iplist
 Scans IP addresses specified in file iplist.
 
 17查询NETBOIS名称的计算机IP
 nmblookup 192.168.0.1
 18发送消息到NT机子
 smbclient -M NETBIOS
 
 19图形界面显示嗅探
 sniffit -i
 [/code:1]
 
 系统管理:
 
 [code:1]
 
 1、关于sysctl:
 其实/etc/sysctl.conf对应的是/proc/sys/目录...
 例如要修改/proc/sys/net/ipv4/ip_default_ttl的话,就修改/etc/sysctl.conf文件如下...
 添加一行为:
 net.ipv4.ip_default_ttl=255,也就是把文件夹变成小数点就可以啦
 然后执行一次
 #sysctl -p
 就可以生效啦。
 
 2、如何使用date修改系统时间:
 $ date 1124170004
 此命令将日期设置为 2004 年 (04) 11月 24 日 (1124) 17时 (1700)。
 #hwclock写入bios
 
 3、查看Linux分区
 #fdisk -l
 或者#parted
 (parted)print
 这样可以看到各个分区的类型及大小,不过这两个看到的结果并非相同
 #cat /proc/partitions
 查看分区卷标:
 #e2label /dev/hdXn
 
 3、修改系统时间
 date -s “2003-04-14 cst”,cst指时区,时间设定用date -s 18:10
 修改后执行clock -w 写到CMOS
 
 4、如何查看当前运行级别
 #runlevel
 或者
 #who -r
 
 5、修改主机名
 主要是三个文件(1)/etc/sysconfig/network-scripts/ifcfg-eth0 (2)/etc/hosts
 (3)/etc/sysconfig/network
 
 6、在SCO上scosh不能telnet到Linux,要修改TERM
 #export TERM=ANSI
 
 7、用sysctl -a查看/proc/sys/下各个值
 
 8、查询22端口正运行什么程序
 #lsof -i :22
 
 9、使退出登陆后程序继续运行:
 # disown
 或者是
 nohup command &
 
 10、Linux共有几种类型的文件:
 d 目录。
 l 符号链接(指向另一个文件)。
 s 套接字文件。
 b 块设备文件。
 c 字符设备文件。
 p 命名管道文件。
 - 普通文件,或者更准确地说,不属于以上几种类型的文件。
 
 11、针对文件的权限:
 r 读权限。
 w 写权限。
 x 执行权限。
 s 文件属主和组set-ID。
 t 粘性位*。
 l 给文件加锁,使其他用户无法访问。
 
 12、redhat的版本如何判断
 #cat /proc/version          (如何怎么修改使系统启动后就为默认的Jintao Linux v2.0)
 #cat /etc/redhat-release
 #cat /etc/issue
 
 13、使用md5sum来校验文件
 #md5sum isofile > hashfile
 #md5sum -c hashfile
 
 14、查看硬盘的使用情况
 #df -k  以k为单位
 #df -m  以m为单位
 #df -h  以人性化单位显示
 
 15、查看目录的大小
 #du -sh dirname
 -s 仅仅显示总计
 -h 显示人性化的信息
 
 16、字符模式下设置环境变量
 #export 变量名=变量值
 
 17、系统默认的suid/sgid程序
 /usr/bin/passwd
 如果不让用户自己有权限修改自己密码,可以把其s位去掉
 /usr/sbin/userhelper
 /usr/sbin/userisdnctl
 /usr/sbin/usrnetctl
 /sbin/pam_timestamp_check
 /sbin/unix_chkpwd
 /sbin/pwdb_chkpwd
 
 18、关于grub
 重新安装一次grub
 #grub-install /dev/hda1
 
 19、关于pam
 /etc/pam.d
 
 20、自动化任务  cron,at,batch
 系统管理员通过cron.deny和cron.allow来禁止和允许用户拥有自己的crontab文件...
 crontab的格式:  分 时 日 月 星期 要运行的命令(注意使用的命令必须是绝对路径)
 crontab -e 编辑
 crontab -r 删除
 crontab -u user 用某用户来执行
 crontab -l 列出当前crontab内容
 at也通过/etc/at.allow和at.deny文件空子后哪些用户可以使用at命令,哪些不行
 
 21、创建文件时即规定日期
 #touch -t 11091531 file            //11.09日15:31分
 
 22、物理安全--->防止ctrl_alt_del重新启动服务器
 #vi /etc/inittab
 # Trap CTRL-ALT-DELETE
 #ca::ctrlaltdel:/sbin/shutdown -t3 -r now
 将ca这行给注释掉...
 
 23、判断当前登陆用户
 echo $LOGNAME
 echo $USER
 id
 whoami
 who am i
 logname
 
 24、关于用户登陆终端的显示:
 如果使用网络登陆,则TTY显示为如下:
 USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU  WHAT
 root     pts/0    169.254.1.2       6:57am  0.00s 25.28s  0.03s  w
 如果使用本地登陆,则显示如下:
 root     tty1     -                12:36pm  3.00s  0.43s  0.43s  -bash
 
 25、实时查看系统所使用内存
 #free -b -s5
 5秒循环一次...
 
 26./configure
 ./configure生成Makefile时查看帮助
 ./configure --help
 27 关于man
 1 用户级命令和应用程序
 2 系统调用和内核出错代码
 3 库调用
 4 设备驱动和网络协议
 5 标准文件格式
 6 游戏和演示
 7 各种文件和文档
 8 系统管理命令
 9 少见隐秘的内核规范和接口
 
 28.更改终端欢迎信息
 vi /etc/motd
 
 29.增强cd功能:
 cd ()
 {
 builtin cd "$@"
 es=$?
 [ $es -eq 0 ] && echo "$OLDPWD  ------------> $PWD"
 return $es
 }
 将上面这段加入到~/.bashrc中,再用cd时就会告诉你从哪来,到哪去。
 [root@LFS ~]#cd /etc
 /root  ------------> /etc
 [root@LFS etc]#
 30.删除特殊文件:
 删除以-开头的文件:rm -- -file  --表示这是rm最后一个参数
 删除乱码文件:一些乱码文件,无法打出它的文件名,通常在gui下也无法删除它
 这时可以使用下面这个方法删除:
 [root@LFS ~]#ls >ls.list 将乱码文件名写入到ls.list中
 [root@LFS ~]#vi ls.list 编辑ls.list,首行加上:
 #!/bin/bash  将ls.list变为shell script
 去掉不想删除的文件,在乱码文件名前加上rm:
 rm asdasd (假设asdasd为乱码)
 [root@LFS ~]#chmod +x ls.list
 [root@LFS ~]#./ls.list
 rm: remove regular  file `asdasd'? y
 [root@LFS ~]#
 
 [/code:1]
 
 Shell相关:
 
 [code:1]
 
 1、find命令常见使用方法:
 查找名字为conf的目录
 #find /目录  -type  d -name conf
 注意type可能为b,c,d,l等...
 查找文件权限为755的文件
 #find /目录 -perm 755 -print
 如果用八进制,则可以用
 #find /目录 -perm -007 -print  (跟chmod里的表示方法相同)
 查找文件属主为kt的文件
 #find /目录 -user kt -print
 查找group为kt的文件
 #find /目录 -group kt -print
 查找名字为file的文件
 #find /目录 -name file
 查找大小为0的文件
 #find /目录 -size 0
 忽略某个目录:
 #find /目录 -name "/目录名" -prune -o -print
 查找属主帐户已经被删除的文件:
 #find /目录 -nouser -print
 按更改时间查找文件
 #find /目录 -mtime -5 -print  单位是5,查找更改时间在5日以内的文件
 查找更改时间在3日以内的文件
 #find /目录 -mtime +3 -print
 查找更改时间比file1新但比file2旧的文件
 #find /目录 file1 ! -newer file2 -exec ls -l {} \;
 不仅查询根目录,而且查询子目录
 #find /目录 -name file -depth -print
 只在当前文件系统内部查询,而不进入其他文件系统
 #find /目录 -name file -mount -print
 用exec对查找出的文件进行操作
 #find /目录 -type f -exec ls -l {} \;     //-exec ls -l {} \;则表示执行“ls -l”的操作.
 用exec安全模式,在删除前有提示
 #find /目录 -name "*.log" -mtime +5 -ok rm {} \;   //这样在删除文件前会先提示
 根据inode号来取得硬链接
 #find /目录 -inum inode号
 
 对find找出的文件执行操作可以使用-exec 执行指令 {} \;也可以使用 | xargs 指令
 
 2、关于if语句的test
 EXPRESSION1 -a EXPRESSION2 两条语句都为true
 EXPRESSION1 -o EXPRESSION2 两条语句任意一条为true
 [-n] STRING                String串非零
 -z STRING                  串的长度为0
 STRING1 = STRING2          两个串相等
 STRING1 != STRING2        两个串不相等
 INTEGER1 -eq INTEGER2      两个整数相同                       equal
 INTEGER1 -ge INTEGER2      INTEGER1大于等于INTEGER2           greater equal
 INTEGER1 -gt INTEGER2      INTEGER1大于INTEGER2            greater than
 INTEGER1 -le INTEGER2      INTEGER1小于等于INTEGER2           less equal
 INTEGER1 -lt INTEGER2      INTEGER1小于INTEGER2               less than
 INTEGER1 -ne INTEGER2      INTEGER1不等于INTEGER2         not equal
 FILE1 -ef FILE2            file1跟file2有同个设备和inode号   equal file
 FILE1 -nt FILE2            file1比file2新                     newer than
 FILE1 -ot FILE2            file1比file2老           older than
 -b file          file存在也是块设备           block
 -c file          file存在且是字符设备           character
 -d file          file存在且是文件夹           directory
 -e file          file存在               exist
 -f file          file存在并是个普通文件
 -g file                    file存在并是SGID
 -h file          file存在并是个符号链接
 -G file          file存在并被有效的组拥有
 -k file          file存在并有s位
 -L file          file存在并是个符号链接
 -O file                    file存在并被有效用户拥有
 -p file          file存在并是个named pipe
 -r file                 file存在并可读
 -s file                    file存在并不为0(greater than 0)
 -S file          file存在并是个socket
 -t [FD]          文件描述FD ?????  这个主要是为了测试shell是否是交互式...
 -u file          file存在并且s位设置过
 -w file           file存在并可写
 -x file          file存在并可执行
 
 3、关于grep的选项
 常用的grep选项有:
 -c 只输出匹配行的行数。
 -i 不区分大小写(只适用于单字符)。
 -h 查询多文件时不显示文件名。
 -l 查询多文件时只输出包含匹配字符的文件名。
 -n 显示匹配行及行号。
 -s 不显示不存在或无匹配文本的错误信息。
 -v 显示不包含匹配文本的所有行。
 -w 精确匹配某个单词
 '\<abc\>' file 精确匹配file文件中的abc字符
 
 精确匹配的三种grep:
 1 grep -w "abc" data.f
 2 grep '\<48\>' data.f
 3 grep "48\>" data.f
 常用grep,   cniv
 grep在使用正则表达式的时候,在匹配策略外面最好用单引号来括上
 
 4、关于unset
 #firstVar=first
 #set
 #unset firstVar
 
 5、awk的使用...
 精确匹配第三个字符为48的行
 awk '{ if($3~/^48$/ ) print $0}' test.txt    //注意这里尽管用正则表达式来匹配,但不能用/\^48\$/,而是可以直接使用^48$
 如果是匹配第三个字符包含48的行
 awk '{ if($3~/48/) print $0}' test.txt
 awk中正则表达式中使用.来表示单个字符,但是shell中使用?匹配单个字符。
 用|表示1或2的关系,但只取一个,使用|时,必须使用圆括号括起来,如
 awk '$0~/(Yellow|Brown)/' test.txt
 用&&表示与的关系,&&的两天最好也要用括号括起来,如
 awk '{ if($1=="fist" && $2=="second") print $0}' test.txt
 用||表示或的关系,可以取一个,也可以取两个
 awk '{ if ($4=="forth" || $5=="fifth") print $0 }' test.txt
 同时匹配两个条件的使用:
 awk '条件1 &&  条件2 { print $xxx }'
 
 6、shell中`的作用
 表达不清楚了...如
 test=`echo $LOGNAME`
 则echo $test的结果为echo $LOGNAME的结果...
 
 7、tr的使用
 将test.txt中的小写字母转换成大写
 tr "[a-z]" "[A-Z]" < test.txt
 不能用 tr "[a-z]" "[A-Z]" < test.txt
 
 8、关于shell中控制字符对应的二进制码
 字符      代码
 ^      136
 ^M      015
 tab      011
 ^Z      032
 响铃      007
 \n
 空格      040
 
 9、cat的用法
 cat -v test.txt    显示转换字符
 
 10、关于参数
 $# 传递到脚本的参数个数
 $* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个
 $$ 脚本运行的当前进程ID号
 $! 后台运行的最后一个进程的进程ID号
 $@ 与$#相同,但是使用时加引号,并在引号中返回每个参数
 $- 显示shell使用的当前选项,与set命令功能相同
 $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
 
 11、关于sed
 sed -n '2p' test.txt  //打印test.txt中第二行的内容
 sed -n '1,3p' test.txt //打印test.txt中第一到第三行的内容  单引号有无无所谓,","表示行到行
 sed -n '4,/The/p' test.txt  //打印第四行中匹配The
 sed -n '1,$p' quote.txt   //打印整个文件
 sed 's/a/b/8'   //替换每行中匹配第8a,改为b
 sed = filename | sed 'N;s/\n/:/' filename
 正则表达式:
 字符类 描述
 [:alnum:] 字母数字 [a-z A-Z 0-9]
 [:alpha:] 字母 [a-z A-Z]
 [:blank:] 空格或制表键
 [:cntrl:] 任何控制字符
 [:digit:] 数字 [0-9]
 [:graph:] 任何可视字符(无空格)
 [:lower:] 小写 [a-z]
 [:print:] 非控制字符
 [:punct:] 标点字符
 [:space:] 空格
 [:upper:] 大写 [A-Z]
 [:xdigit:] 十六进制数字 [0-9 a-f A-F]
 利用sed来定位
 xx为一行号,如1
 x,y 表示行号范围从x到y,如2,5表示从第2行到第5行
 /pattern/ 查询包含模式的行。例如/ disk /或/[a-z]/
 /pattern/pattern/ 查询包含两个模式的行。例如/ disk/disks/
 pattern/,x 在给定行号上查询包含模式的行。如/ ribbon / , 3
 x,/pattern/ 通过行号和模式查询匹配行。3 . / vdu /
 x,y! 查询不包含指定行号x和y的行。1 , 2 !
 
 12、关于test
 可以使用如下命令判断文件是否可写
 (1)#[ -w fruit.txt ]    //注意其中空格
 #echo $?
 (2)#test -w fruit.txt
 #echo $?
 这里根据返回的状态来判断是否可写,如果返回0,则表示可写。0就表示成功...
 
 13、关于expr
 首先请注意,必须是整数计算...
 #expr 10+10 结果为10+10
 #expr 10 + 10则结果为20
 用乘号时需要用\转义..
 
 14 shell中的系统变量
 $LOGNAME   当前用户的名字...
 
 15 一般需要用\屏蔽的字符
 $.'"*[]^|0\+?
 
 16 关于正则表达式
 匹配某字符出现次数
 pattern\{n\} 匹配模式出现n次。
 pattern\{n,\} 匹配模式出现最少n次。
 pattern\{n,m} 匹配模式出现n到m次之间,n , m为0 - 2 5 5中任意整数。
 
 17 正则表达式
 用来匹配IP:
 '[0-9][0-9][0-9].[0-9][0-9][0-9].[0-9][0-9][0-9].[0-9][0-9][0-9]'
 等同
 '[0-9]\{3\}\.[0-9]\{3\}'
 
 18 使用gpg校验
 #gpg --verify xxx.asc
 
 [/code:1]
 
 程序使用:
 
 [code:1]
 
 关于vim的使用:
 替换当前行的某个单词    :s/old/new/g
 替换全文所有符合的单词  :%s/old/new/g
 替换全文所有符合的单词并让用户确认: :%s/old/new/gc
 :set ai        自动缩进
 :syntax on     语法高亮
 :set nu        显示行号
 :set showmatch 自动匹配{}[]()
 :set all       显示所有选项。
 :ce            光标所在文本居中
 :le            光标所在文本左对齐
 :ri            光标所在文本右对齐
 :% ce          全文居中
 :1,10 ce      1--10行居中
 :set paste     粘贴模式,此时向vi中复制格式化后的文本,原样的贴上,vi不会对其缩进
 :n   :N       vi同时编辑多个文件时(vi file1 file2),切换文件,n(向后) N(向前)
 vi中也有TAB命令补全功能,使用方法同bash shell
 
 [/code:1]
 | 
 |