??xml version="1.0" encoding="utf-8" standalone="yes"?> NetCatQ在|络工具中有“瑞士军刀”誉Q其有Windows和Linux的版本。因为它短小_?zhn)Q?.84版本也不q?5kQ旧版本或羃减版甚至更小Q、功能实用,被设计ؓ(f)一个简单、可靠的|络工具Q可通过TCP或UDP协议传输d数据。同Ӟ它还是一个网l应用Debug分析器,因ؓ(f)它可以根据需要创建各U不同类型的|络q接?/p> 一、版?br />通常的Linux发行版中都带有NetCatQ简UncQ,甚至在拯救模式光盘中也由busybox提供?jin)简版的nc工具。但不同的版本,其参数的使用略有差异?br />NetCat 官方地址Q?/p> 在用前Q先用man nc看看帮助。这里以U旗DC Server 5.0上的1.10版本q行单说明?br />假设?a style="text-decoration: none; color: blue;">服务?/a>信息Q?/p> server1: 192.168.10.10 二、常见?br />1、远E拷贝文?br />从server1拯文g到server2上。需要先在server2上,Q用ncȀzȝ听, server2上运行:(x) nc -l 1234 > text.txt server1上运行:(x) nc 192.168.10.11 1234 < text.txt 注:(x)server2上的监听要先打开 nc -l -p 1234 | dd of=/dev/sda server1上执行传输,卛_完成从server1克隆sda盘到server2的Q务:(x) dd if=/dev/sda | nc192.168.10.11 1234
引用[root@hatest1 ~]# cat /etc/asianux-release
Asianux release 2.0 (Trinity SP2)
[root@hatest1 ~]# cat /etc/redflag-release
Red Flag DC Server release 5.0 (Trinity SP2)
[root@hatest1 ~]# type -a nc
nc is /usr/bin/nc
[root@hatest1 ~]# rpm -q nc
nc-1.10-22
server2: 192.168.10.11
2、克隆硬盘或分区
操作与上面的拯是雷同的Q只需要由dd获得盘或分区的数据Q然后传输即可?br />克隆盘或分区的操作Q不应在已经mount的的pȝ上进行。所以,需要用安装光盘引导后Q进入拯救模式(或用Knoppix工具光盘Q启动系l后Q在server2上进行类似的监听动作Q?/p>
defaultHost=//192.168.0.1/proj
defaultUserName=root
mountPath=/path/proj
host=$defaultHost
userName=$defaultUserName
if [ $# -eq 1 ]
then
host=$1
umount -l $mountPath
elif [ $# -eq 2 ]
then
host=$1
userName=$2
umount -l $mountPath
elif [ $# -eq 3 ]
then
host=$1
userName=$2
mountPath=$3
umount -l $mountPath
fi
scmd="mount -t cifs -o user=$userName,password=workstation,rw,file_mode=0777,dir_mode=0777 $host $mountPath"
echo $scmd
eval $scmd
]]>
试脚本:
]]>
find -type f -size 0 -exec rm -rf {} \;
2.查看q程
按内存从大到排?br />
ps -e -o "%C : %p : %z : %a"|sort -k5 -nr
3.按cpu利用率从大到排?br />
ps -e -o "%C : %p : %z : %a"|sort -nr
4.打印?span class="t_tag" >cache里的URL
grep -r -a jpg /data/cache/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}'
5.查看http的ƈ发请求数?qing)其TCPq接状?/span>Q?br />
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
6. sed -i '/Root/s/no/yes/' /etc/ssh/sshd_config sed在这个文里Root的一行,匚wRoot一行,no替换成yes.
7.1.如何杀?span class="t_tag" >mysqlq程Q?br />
ps aux|grep mysql|grep -v grep|awk '{print $2}'|xargs kill -9 (从中?jin)解到awk的用?
killall -TERM mysqld
kill -9 `cat /usr/local/apache2/logs/httpd.pid` 试试查杀q程PID
8.昄q行3U别开启的服务:
ls /etc/rc3.d/S* |cut -c 15- (从中?jin)解到cut的用途,截取数据)
9.如何在编写SHELL昄多个信息Q用EOF
cat << EOF
+--------------------------------------------------------------+
| === Welcome to Tunoff services === |
+--------------------------------------------------------------+
EOF
10. for 的y?如给mysqlY链接)
cd /usr/local/mysql/bin
for i in *
do ln /usr/local/mysql/bin/$i /usr/bin/$i
done
11. 取IP地址Q?br />
ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6- 或?br />
ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'
12.内存?span class="t_tag" >大小:
free -m |grep "Mem" | awk '{print $2}'
13.
netstat -an -t | grep ":80" | grep ESTABLISHED | awk '{printf "%s %s\n",$5,$6}' | sort
14.查看Apache的ƈ发请求数?qing)其TCPq接状态:(x)
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
15.因ؓ(f)同事要统计一?span class="t_tag" >服务?/span>下面所有的jpg的文件的大小,写了(jin)?span class="t_tag" >shelll他来统?原来用xargs实现,但他一ơ处理一部分,搞的有多个d....,下面?span class="t_tag" >命o(h)p解决?
find / -name *.jpg -exec wc -c {} \;|awk '{print $1}'|awk '{a+=$1}END{print a}'
CPU的数量(多核多个CPUQcat /proc/cpuinfo |grep -c processorQ越多,pȝ负蝲低Q每U能处理的请求数也越多?br />
--------------------------------------------------------------------------------------------------------------------
16 CPU负蝲 # cat /proc/loadavg
(g)查前三个输出值是否超q了(jin)pȝ逻辑CPU?倍?nbsp;
18 CPU负蝲 #mpstat 1 1
(g)?idle是否q低(比如于5%)
19 内存I间 # free
(g)查free值是否过?nbsp; 也可以用 # cat /proc/meminfo
20 swapI间 # free
(g)查swap used值是否过?nbsp; 如果swap usedD高,q一步检查swap动作是否频繁Q?br />
# vmstat 1 5
观察si和so值是否较?br />
21 盘I间 # df -h
(g)查是否有分区使用?Use%)q高(比如过90%) 如发现某个分区空间接q用,可以q入该分区的挂蝲点,用以下命令找出占用空间最多的文g或目录:(x)
# du -cks * | sort -rn | head -n 10
22 盘I(y)/O负蝲 # iostat -x 1 2
(g)查I/O使用?%util)是否过100%
23 |络负蝲 # sar -n DEV
(g)查网l流?rxbyt/s, txbyt/s)是否q高
24 |络错误 # netstat -i
(g)查是否有|络错误(drop fifo colls carrier) 也可以用命o(h)Q? cat /proc/net/dev
25 |络q接数目 # netstat -an | grep -E “^(tcp)” | cut -c 68- | sort | uniq -c | sort -n
26 q程L # ps aux | wc -l
(g)查进E个数是否正?(比如过250)
27 可运行进E数?nbsp; # vmwtat 1 5
列给出的是可q行q程的数目,(g)查其是否过pȝ逻辑CPU??br />
28 q程 # top -id 1
观察是否有异常进E出?br />
29 |络状?nbsp; (g)查DNS, |关{是否可以正常连?br />
30 用户 # who | wc -l
(g)查登录用h否过?(比如过50? 也可以用命o(h)Q? uptime
31 pȝ日志 # cat /var/log/rflogview/*errors
(g)查是否有异常错误记录 也可以搜M些异常关键字Q例如:(x)
# grep -i error /var/log/messages
# grep -i fail /var/log/messages
32 核心(j)日志 # dmesg
(g)查是否有异常错误记录
33 pȝ旉 # date
(g)查系l时间是否正?br />
34 打开文g数目 # lsof | wc -l
(g)查打开文gL是否q多
35 日志 # logwatch –print 配置/etc/log.d/logwatch.confQ将 Mailto 讄qemail 地址Q启动mail服务 (sendmail或?span class="t_tag" >postfix)Q这样就可以每天收到日志报告?jin)?br />
~省logwatch只报告昨天的日志Q可以用# logwatch –print –range all 获得所有的日志分析l果?br />
可以? logwatch –print –detail high 获得更具体的日志分析l果(而不仅仅是出错日??br />
36.杀?0端口相关的进E?br />
lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh
37.清除僉|q程?br />
ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9
38.tcpdump 抓包 Q用来防?0端口被hd时可以分析数?br />
# tcpdump -c 10000 -i eth0 -n dst port 80 > /root/pkts
39.然后(g)查IP的重复数 q从到大排?注意 "-t\ +0" 中间是两个空?br />
# less pkts | awk {'printf $3"\n"'} | cut -d. -f 1-4 | sort | uniq -c | awk {'printf $1" "$2"\n"'} | sort -n -t\ +0
40.查看有多个zd?span class="t_tag" >php-cgiq程
netstat -anp | grep php-cgi | grep ^tcp | wc -l
UNIX Shell 里面比较字符写法Q?/p>