shell自动登录ssh并运行另外一台机器上的脚本

平时工作,如果客户有买linux服务器,经常要帮客户安装一些东西,这时得登录客户的服务器,然后从我们公司的服务器拷贝脚本,然后再运行,比较麻烦.
使shell利用python的SimpleHTTPServer模块可以很方便的进行操作(剑走偏锋)
PS: perl的net::ssh与ruby的net/ssh都是现成的.
以后直接运行它就可以了!

  1. #!/bin/bash
  2. use () {
  3.         echo -e "try again.\teg: ./$0 1.1.1.1" && exit 1
  4. }
  5. echo $(echo $@)|grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' 2>&1 >/dev/null
  6. if [ $? -ne 0 ]
  7.         then
  8.         use
  9. if [ $# != 1 ]
  10.         then
  11.         use && exit 1
  12.         fi
  13.         fi
  14. cd /root/K
  15. python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"  2>&1 >/dev/null &
  16. ssh -tt $@ <<EOF
  17. curl Your_Server_IP:8000/Some_Script|bash && exit
  18. EOF
  19. ps aux|grep \[S]impleHTTPServer|awk '{print "kill -9",$2}'|bash
  20. echo "all the jobs has been done!"

grep不显示本身进程

无需传统意义上的 grep xx|grep -v grep ……

  1. [root@Centos ~]# ps aux|grep ssh
  2. root      1959  0.0  0.2   7076  1064 ?        Ss   Oct02   0:00 /usr/sbin/sshd
  3. root      5812  0.0  0.1   3920   688 pts/1    R+   15:30   0:00 grep ssh
  4. root     18278  0.0  0.5  10076  2912 ?        Ss   Oct06   0:18 sshd: root@pts/1 
  5. [root@Centos ~]# ps aux|grep \[s]sh
  6. root      1959  0.0  0.2   7076  1064 ?        Ss   Oct02   0:00 /usr/sbin/sshd
  7. root     18278  0.0  0.5  10076  2912 ?        Ss   Oct06   0:18 sshd: root@pts/1

Linux命令行 快速查看本机IP

利用curl命令抓取网页,快速查看本机IP,无需文本过滤,直接就可以查看.

  1. curl ip.appspot.com

perl模块_List::Util

1加2加3加4 … 加到100,试了一下还是perl最快
需要用到perl的List::Util模块.

  1. [root@centos perl]# more plus.pl
  2. #!/usr/bin/perl -w
  3. use strict;
  4. use List::Util qw[sum];
  5. my $t = sum(1..100);
  6. print "$t\n";
  7. [root@centos perl]# perl plus.pl
  8. 5050

shell取巧的方法也很简单,利用seq与sed和bc
seq生成数字,sed将空格替换为加号,通过管道传递给bc进行加法运算.

  1. [root@centos perl]# seq -s " " 100|sed 's/ /+/g'|bc
  2. 5050

批量封掉危险的IP网段

根据dshield.org的黑名单,可得到一堆危险的网段,中国的IP也占了一些,我看估计都是肉鸡.
防止这些危险的机器向我们发起攻击,决定把这些危险的IP网段封掉(debian测试通过).
当然,iptables也能做,但是在大流量攻击面前,无效路由显得更轻松,不会像iptables那样占用大量资源!

  1. #!/bin/bash
  2. # filename:  block_IPs.sh
  3. # auth: baiqiuyi.com
  4. curl "http://www.spamhaus.org/drop/drop.lasso"|awk 'NR>1{print $1}' >ip
  5. if [ $? -eq 0 ];then
  6. while read ip
  7.    do
  8. /usr/bin/ipcalc $ip|sed -n '/Address/p;/Netmask/p'|sed -r 's/.*( ([0-9]{1,3}\.){3}[0-9]{1,3}).*/\1/'|sed 'N;s/\n/ netmask /g;s/^/route add -net/;s/$/ reject/'|bash
  9.    done < ip
  10.    rm -f ip
  11. exit 0
  12.  fi

附: ipcalc下载地址

7 12345»...7