<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>旌旗博客 &#187; shell</title>
	<atom:link href="http://rocky.kingtch.com/tag/shell/feed/" rel="self" type="application/rss+xml" />
	<link>http://rocky.kingtch.com</link>
	<description></description>
	<lastBuildDate>Sat, 31 Dec 2011 10:47:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>自动阻止SYN、DoS攻击</title>
		<link>http://rocky.kingtch.com/2008/07/23/%e8%87%aa%e5%8a%a8%e9%98%bb%e6%ad%a2syn%e3%80%81dos%e6%94%bb%e5%87%bb/</link>
		<comments>http://rocky.kingtch.com/2008/07/23/%e8%87%aa%e5%8a%a8%e9%98%bb%e6%ad%a2syn%e3%80%81dos%e6%94%bb%e5%87%bb/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 05:51:05 +0000</pubDate>
		<dc:creator>rocky</dc:creator>
				<category><![CDATA[I.T.]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://blog.kingtch.com/2008/07/23/90/%e8%87%aa%e5%8a%a8%e9%98%bb%e6%ad%a2syn%e3%80%81dos%e6%94%bb%e5%87%bb.html</guid>
		<description><![CDATA[除了告警敦促人工处理SYN、DoS攻击，可以将嫌疑犯先抓起来再说： netstat -na &#124; grep :80 &#124;awk '{print $5}'&#124;awk -F '::ffff:' '{print $2}' &#124; grep ':' &#124; awk -F: '{print $1}' &#124; sort &#124; uniq -c &#124; sort -r &#124; awk -F' ' '{if ($1 &#62; 50) print $2}' &#124; sed 's/^.*$/iptables -I RH-Firewall-1-INPUT 1 -p tcp -m tcp -s &#38; --dport 80 --syn -j [...]]]></description>
			<content:encoded><![CDATA[<p>除了告警敦促人工处理SYN、DoS攻击，可以将嫌疑犯先抓起来再说：</p>
<pre>netstat -na | grep :80 |awk '{print $5}'|awk -F '::ffff:' '{print $2}' | grep ':' | awk -F: '{print $1}' | sort | uniq -c | sort -r | awk -F' ' '{if ($1 &gt; 50) print $2}' | sed 's/^.*$/iptables -I RH-Firewall-1-INPUT 1 -p tcp -m tcp -s &amp; --dport 80 --syn -j REJECT/' | sh</pre>
<p>该脚本基于的基础是认为从一个IP过来的连接数过大（超过50个），则该IP可能在进行攻击。实际上可能误杀掉一些只能通过代理服务器访问的大公司用户，或者某些有点贪心的网络爬虫。可以在脚本中加入一些白名单以防止误杀，如：</p>
<pre>netstat -na | grep :80 |awk '{print $5}'|awk -F '::ffff:' '{print $2}' | grep ':' | awk -F: '{print $1}' | sort | uniq -c | sort -r | awk -F' ' '{if ($1 &gt; 50) print $2}' | grep -v xxx.xxx.xxx.xxx | sed 's/^.*$/iptables -I RH-Firewall-1-INPUT 1 -p tcp -m tcp -s &amp; --dport 80 --syn -j REJECT/' | sh</pre>
<p><span style="text-decoration: underline"><a href="http://4thpeg.com/romads/post.php?p=9-4603"></a><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://rocky.kingtch.com/2008/07/23/%e8%87%aa%e5%8a%a8%e9%98%bb%e6%ad%a2syn%e3%80%81dos%e6%94%bb%e5%87%bb/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>自动短信提醒进行服务器状态告警</title>
		<link>http://rocky.kingtch.com/2008/05/16/%e8%87%aa%e5%8a%a8%e7%9f%ad%e4%bf%a1%e6%8f%90%e9%86%92%e8%bf%9b%e8%a1%8c%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%8a%b6%e6%80%81%e5%91%8a%e8%ad%a6/</link>
		<comments>http://rocky.kingtch.com/2008/05/16/%e8%87%aa%e5%8a%a8%e7%9f%ad%e4%bf%a1%e6%8f%90%e9%86%92%e8%bf%9b%e8%a1%8c%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%8a%b6%e6%80%81%e5%91%8a%e8%ad%a6/#comments</comments>
		<pubDate>Fri, 16 May 2008 08:22:33 +0000</pubDate>
		<dc:creator>rocky</dc:creator>
				<category><![CDATA[I.T.]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://blog.kingtch.com/2008/05/16/89/%e8%87%aa%e5%8a%a8%e7%9f%ad%e4%bf%a1%e6%8f%90%e9%86%92%e8%bf%9b%e8%a1%8c%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%8a%b6%e6%80%81%e5%91%8a%e8%ad%a6.html</guid>
		<description><![CDATA[定时启动的脚本： df &#124; grep “/var” &#124; awk &#8216;{ print $5 }&#8217; &#124; awk -F”%” &#8216;{print $1}&#8217; &#124; awk &#8216;{ if ($1 &#62; 90){print “alert.sh \”139xxxxxxxx\” \”insufficient disk space on /var. “,$1,”\”"} }&#8217; &#124; csh ps -ef &#124; grep httpd &#124; grep -v cronolog &#124; grep -v grep &#124; grep -v root &#124; wc -l &#124; [...]]]></description>
			<content:encoded><![CDATA[<p>定时启动的脚本：</p>
<p>df | grep “/var” | awk &#8216;{ print $5 }&#8217; | awk -F”%” &#8216;{print $1}&#8217; | awk &#8216;{ if ($1 &gt; 90){print “alert.sh \”139xxxxxxxx\” \”insufficient disk space on /var. “,$1,”\”"} }&#8217; | csh<br />
ps -ef | grep httpd | grep -v cronolog | grep -v grep | grep -v root | wc -l | awk &#8216;{ if ($1 &gt; 3000){print “alert.sh \”139xxxxxxxx\” \”apache process “, $1,”\”"} }&#8217; | csh<br />
echo &#8216;show processlist&#8217; | mysql | grep -v Id | grep -v processlist | wc -l | awk &#8216;{ if ($1 &gt; 3000){print “alert.sh \”139xxxxxxxx\” \”mysql process “, $1,”\”"} }&#8217; | csh</p>
<p>alert.sh 脚本:</p>
<p>echo $2<br />
echo -e “From:monitor&lt;&gt;\nReply-to:support &lt;support.labs@etentec.com&gt;\nSubject:$2\n\n$2\n.” | /usr/sbin/sendmail $1@139.com</p>
]]></content:encoded>
			<wfw:commentRss>http://rocky.kingtch.com/2008/05/16/%e8%87%aa%e5%8a%a8%e7%9f%ad%e4%bf%a1%e6%8f%90%e9%86%92%e8%bf%9b%e8%a1%8c%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%8a%b6%e6%80%81%e5%91%8a%e8%ad%a6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>一个监视服务器状态的shell脚本</title>
		<link>http://rocky.kingtch.com/2008/05/16/%e4%b8%80%e4%b8%aa%e7%9b%91%e8%a7%86%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%8a%b6%e6%80%81%e7%9a%84shell%e8%84%9a%e6%9c%ac/</link>
		<comments>http://rocky.kingtch.com/2008/05/16/%e4%b8%80%e4%b8%aa%e7%9b%91%e8%a7%86%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%8a%b6%e6%80%81%e7%9a%84shell%e8%84%9a%e6%9c%ac/#comments</comments>
		<pubDate>Fri, 16 May 2008 06:03:47 +0000</pubDate>
		<dc:creator>rocky</dc:creator>
				<category><![CDATA[I.T.]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://blog.kingtch.com/2008/05/16/88/%e4%b8%80%e4%b8%aa%e7%9b%91%e8%a7%86%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%8a%b6%e6%80%81%e7%9a%84shell%e8%84%9a%e6%9c%ac.html</guid>
		<description><![CDATA[#! /bin/bash for1do&#160;&#160;&#160; clear&#160;&#160;&#160; date&#160;&#160;&#160; echo -n &#8216;httpd process:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8216;;ps -ef &#124; grep httpd &#124; grep -v cronolog &#124; grep -v grep &#124; grep -v root &#124; wc -l&#160;&#160;&#160; echo -n &#8216;http connection:&#160;&#160; &#8216;;netstat -an &#124; grep :80 &#124; grep ESTABLISHED &#124; wc -l&#160;&#160;&#160; echo -n &#8216;mysql process:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8216;;echo &#8216;show processlist&#8217; &#124; mysql &#124; grep [...]]]></description>
			<content:encoded><![CDATA[<p>#! /bin/bash
<p>for<sup><a href="http://rocky.kingtch.com/2008/05/16/%e4%b8%80%e4%b8%aa%e7%9b%91%e8%a7%86%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%8a%b6%e6%80%81%e7%9a%84shell%e8%84%9a%e6%9c%ac/#footnote_0_85" id="identifier_0_85" class="footnote-link footnote-identifier-link" title=" ; ; ">1</a></sup><br />do<br />&nbsp;&nbsp;&nbsp; clear<br />&nbsp;&nbsp;&nbsp; date<br />&nbsp;&nbsp;&nbsp; echo -n &#8216;httpd process:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8216;;ps -ef | grep httpd | grep -v cronolog | grep -v grep | grep -v root | wc -l<br />&nbsp;&nbsp;&nbsp; echo -n &#8216;http connection:&nbsp;&nbsp; &#8216;;netstat -an | grep :80 | grep ESTABLISHED | wc -l<br />&nbsp;&nbsp;&nbsp; echo -n &#8216;mysql process:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8216;;echo &#8216;show processlist&#8217; | mysql | grep -v Id | grep -v processlist | wc -l<br />&nbsp;&nbsp;&nbsp; echo -n &#8216;mysql connection:&nbsp; &#8216;;netstat -an | grep 3306 | grep ESTABLISHED | wc -l<br />&nbsp;&nbsp;&nbsp; echo &#8216;tcp connection stats:&#8217;;netstat -n | awk &#8216;/^tcp/ {++S[$NF]} END {for(a in S) print “&nbsp;&nbsp; “,a, S[a]}&#8217;<br />&nbsp;&nbsp;&nbsp; echo &#8216;sorted ESTABLISHED connections: &#8216;;netstat -na|grep ESTABLISHED|awk &#8216;{print $5}&#8217;|awk -F: &#8216;{print $1}&#8217;|sort|uniq -c|sort -r +0n<br />&nbsp;&nbsp;&nbsp; echo &#8216;sorted SYN connections: &#8216;; netstat -na|grep SYN|awk &#8216;{print $5}&#8217;|awk -F: &#8216;{print $1}&#8217;|sort|uniq -c|sort -r +0n<br />&nbsp;&nbsp;&nbsp; sleep 5<br />done</p>
<ol class="footnotes"><li id="footnote_0_85" class="footnote"> ; ; </li></ol>]]></content:encoded>
			<wfw:commentRss>http://rocky.kingtch.com/2008/05/16/%e4%b8%80%e4%b8%aa%e7%9b%91%e8%a7%86%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%8a%b6%e6%80%81%e7%9a%84shell%e8%84%9a%e6%9c%ac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用rsync同步</title>
		<link>http://rocky.kingtch.com/2007/01/12/%e4%bd%bf%e7%94%a8rsync%e5%90%8c%e6%ad%a5/</link>
		<comments>http://rocky.kingtch.com/2007/01/12/%e4%bd%bf%e7%94%a8rsync%e5%90%8c%e6%ad%a5/#comments</comments>
		<pubDate>Fri, 12 Jan 2007 03:43:51 +0000</pubDate>
		<dc:creator>rocky</dc:creator>
				<category><![CDATA[I.T.]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://blog.kingtch.com/2007/01/12/17/%e4%bd%bf%e7%94%a8rsync%e5%90%8c%e6%ad%a5.html</guid>
		<description><![CDATA[做网站开发经常碰到的问题是代码更新的问题。 直接用ssh登到服务器上操作总会遇到网络太慢的情况，于是传统的做法是在本地改，然后ftp上传。可是如果改的文件数量比较多，而且比较分散，就比较头疼了，费时费力而且很容易出错。如果你感到痛苦，就用rsync吧。 简单使用方法： 1. 在服务器上配置文件： /home/kingtch/rsyncd.conf uid = rocky gid = rocky use chroot = no max connections = 1 syslog facility = local5 pid file = /var/run/rsyncd.pid [www] path=/home/kingtch/www comment = kingtch WWW repository (requires authentication) #auth users = rocky #secrets file = /home/kingtch/rsyncd.secrets hosts allow=221.217.166.54 启动服务：rsync &#8211;daemon -v &#8211;port=10025 &#8211;config=/home/kingtch/rsyncd.conf 2. 本地更新： 从服务上更新本地代码：rsync [...]]]></description>
			<content:encoded><![CDATA[<p>做网站开发经常碰到的问题是代码更新的问题。<br />
    直接用ssh登到服务器上操作总会遇到网络太慢的情况，于是传统的做法是在本地改，然后ftp上传。可是如果改的文件数量比较多，而且比较分散，就比较头疼了，费时费力而且很容易出错。如果你感到痛苦，就用rsync吧。<br />
    简单使用方法：</p>
<ul>
<li>1. 在服务器上配置文件：<br />
        /home/kingtch/rsyncd.conf<br />
<code><br />
                   uid = rocky<br />
                   gid = rocky<br />
                   use chroot = no<br />
                   max connections = 1<br />
                   syslog facility = local5<br />
                   pid file = /var/run/rsyncd.pid</p>
<p>                   [www]<br />
                   path=/home/kingtch/www<br />
                   comment = kingtch WWW repository (requires authentication)<br />
                   #auth users = rocky<br />
                   #secrets file = /home/kingtch/rsyncd.secrets<br />
                   hosts allow=221.217.166.54<br />
</code><br />
        启动服务：rsync &#8211;daemon -v &#8211;port=10025 &#8211;config=/home/kingtch/rsyncd.conf
    </li>
<li>2. 本地更新：<br />
        从服务上更新本地代码：rsync -ruv &#8211;compress &#8211;links &#8211;progress &#8211;exclude=image rsync://www.kingtch.com:10025/www ./kingtch_www/
    </li>
</ul>
<p>     安全问题一直是r系列程序被世人诟病之焦点，所以需要注意：<br />
   1. 正确配置好配置文件中的uid、gid，使得服务器运行用户不可能越雷池。<br />
   2. 连接数作限制<br />
   3. 作IP限制<br />
   4. 目前rsync本身并不支持ssl，因此可能被窃取传输数据。但rsync可基于ssh等进行传输，所以问题不大。<br />
   5. 如果不麻烦的话，用完了就把服务器上的rsync服务关掉。</p>
<p>   其实也有一些如<a href="http://www.fileware.com/" target="_blank">FTPSync</a>等软件可以实现基于FTP协议进行同步，相信是鼠标爱好者的同行们的可选项之一，只是其不支持加密的FTP，而且作者好像n年没更新了。</p>
]]></content:encoded>
			<wfw:commentRss>http://rocky.kingtch.com/2007/01/12/%e4%bd%bf%e7%94%a8rsync%e5%90%8c%e6%ad%a5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>常用shell命令</title>
		<link>http://rocky.kingtch.com/2007/01/08/%e5%b8%b8%e7%94%a8shell%e5%91%bd%e4%bb%a4/</link>
		<comments>http://rocky.kingtch.com/2007/01/08/%e5%b8%b8%e7%94%a8shell%e5%91%bd%e4%bb%a4/#comments</comments>
		<pubDate>Mon, 08 Jan 2007 04:56:30 +0000</pubDate>
		<dc:creator>rocky</dc:creator>
				<category><![CDATA[I.T.]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://yonggang.blog.kingtch.com/2007/01/08/%e5%b8%b8%e7%94%a8shell%e5%91%bd%e4%bb%a4/</guid>
		<description><![CDATA[1. basename     strip directory and suffix from filenames     myscript:         echo “Usage: `basename $0` [option]”         exit 1 2. dirname      strip non-directory suffix from file name 3. fuser     identify processes using files or sockets     e.g.:  输出监听tcp 80端口的进程              for name in `fuser 80/tcp 2&#62;/dev/null` ; do echo $name; done &#124; awk &#8216;{print [...]]]></description>
			<content:encoded><![CDATA[<p>1. basename<br />
    strip directory and suffix from filenames<br />
    myscript:<br />
        echo “Usage: `basename $0` [option]”<br />
        exit 1</p>
<p>2. dirname<br />
     strip non-directory suffix from file name</p>
<p>3. fuser<br />
    identify processes using files or sockets<br />
    e.g.:  输出监听tcp 80端口的进程<br />
             for name in `fuser 80/tcp 2&gt;/dev/null` ; do echo $name; done | awk &#8216;{print “ps -fp “, $1}&#8217; | sh| grep -v UID</p>
<p>4. strings, hexdump<br />
    查看二进制文件内容。</p>
<p>5. awk<br />
    pattern scanning and processing language</p>
<p>6. sed<br />
    stream editor for filtering and transforming text</p>
]]></content:encoded>
			<wfw:commentRss>http://rocky.kingtch.com/2007/01/08/%e5%b8%b8%e7%94%a8shell%e5%91%bd%e4%bb%a4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

