Category: Linux

  • 我的shell脚本注释块 | 事半功倍

    写bash脚本时,每次把下面脚本加进去

    #!/bin/bash
    #for use:
    #author: jpuyy date  [email protected]
    #modified by xx at date
    #version:
    #history:
    #relate on:
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH

    这里最后一句使用export,使得执行后,各变量和操作结束,从而不会传回到父进程中。

    也就是系统会分配bash来让我们执行这个脚本,这也是一般情况下我们想要的效果。

    如果想让变量和操作在结束后留在系统里,要用source命令

    常见的是

    source ~/.bashrc

    整理一下其他文件头部注释块:

    python开头代码

    #!/usr/bin/env python
    #for use:
    #author: jpuyy date  jpuyy.com [email protected]
    #modified by xx at date
    #version:
    #history:
    #relate on:

    :)EOT

  • cron,crontab整理及实例

    crontab使用语法:

    crontab [ -u user ] file #从file文件中读取,不建议使用
    crontab [ -u user ] [ -i ] { -e | -l | -r }  # -e代表编辑,-l代表显示存在的cron,-r代表移除cron任务

    如编辑jpuyy的cron列表,

    如果是root来帮jpuyy写cron规则:

    crontab -u jpuyy -e

    如果是jpuyy自己,则直接使用:

    crontab -e

    cron会自动搜索/var/spool/cron/crontabs目录,找到与对应用户的cron来执行,可以发现上面crontab编辑的就是这些文件,用crontab很方便,就不要直接编辑这些文件了。

    在ubuntu下,默认编辑cron的为nano,使用不方便。
    修改默认编辑器修改环境变量EDITOR.

     export EDITOR=vi

    cron的写法:

    其实这些都是描述性的语句,告诉cron去怎么执行;每一条语句要单独做为一行;重点是时间的写法。五个区域代表了时间,区域里用数字与符号结合使用:

    数字可以是:

    分钟 (0-59)
    小時 (0-23)
    日期 (1-31)
    月份 (1-12)
    星期 (0-6)//0代表星期天

    除了数字,几个符号是:

    星号”*”       代表所有的取值范围内的数字

    反斜杠”/”       代表每的意思,”*/5″表示每5个单位

    减号”-”       代表从某个数字到某个数字,

    英文半角逗号”,”       代表分开几个离散的数字

    当时间描述完之后,加上要执行的命令:

    这个区域里的命令,请尽量多的用绝对路径

    如之前设定重启时,

    30 3 * * * reboot不管用,最后改为 30 3 * * *  /sbin/reboot才起的做用

    例子:

    每隔两周且在周一的9点半执行清空/tmp/cache/*

    30 9 * * 1/2 rm -rf /tmp/cache/*

    如果希望重启后首先运行一次,则在最前面清加@reboot,如

     @reboot 30 9 * * 1/2 rm -rf /tmp/cache/*

    四个关键字及等价形式
    @yearly 0 0 1 1 *
    @daily 0 0 * * *
    @hourly 0 * * * *
    @reboot Run at startup.

    cron任务的执行结果会输出到对应用户的mail文件中,如果不需要发给任何人,则使用

    MAIL=""
    

    cron 里可以写私用变量,后面的脚本即可使用此变量

    my_variable=foo
    * * * * * echo $my_variable
    

    每5分钟跑一次a.sh,同样的每5分钟跑一次b.sh,两个脚本错开时间,比如02, 07, 12, 17, 22, 27… 跑a脚本,04, 09, 14, 19, 24, 29…跑b脚本

    4-59/5     * * * * c1
    2-59/5  * * * * c2

    参考:http://serverfault.com/questions/351505/crontab-steps-plus-increment

    cron测试网站: http://cron.schlitt.info/index.php
    cron生成网站: http://www.generateit.net/cron-job/

  • Linux下的下载工具

    • Axel [推荐]

    Axel是命令行下的多线程下载工具,支持断点续传,速度通常情况下是Wget的几倍。

    可在http://www.linuxfans.org/nuke/modules.php?name=Site_Downloads&op=mydown&did=1697下载。

    下载后使用如下命令编译安装:

    tar zxvf axel-1.0a.tar.gz
    cd axel-1.0a/
    ./configure
    make
    make install
    

    基本的用法如下: #axel [选项] [下载目录] [下载地址]
    [root@localhost axel-1.0a]# axel –help
    Usage: axel [options] url1 [url2] [url…]

    -s x Specify maximum speed (bytes per second)
    -n x Specify maximum number of connections
    -o f Specify local output file
    -S [x] Search for mirrors and download from x servers
    -N Just don”t use any proxy server
    -q Leave stdout alone
    -v More status information
    -a Alternate progress indicator
    -h This information
    -V Version information

    一个典型下载如下:

    alex -n 10 -o /home/kennycx/ http://xxxx/jre.tar.gz

    用10线程将指定路径的文件下载到/home/kennycx/这个目录下。

    #设置代理

    export HTTP_PROXY=192.168.0.5:8080

    #开始下载

    axel -n 10 -vo . http://xxx/xx.tar.gz
    
    Initializing download: http://xxx/xx.tar.gz
    File size: 1945089 bytes
    Opening output file ./d4x-2.5.6.tar.gz
    Starting download
    
    [ 0%] ………. ………. ………. ………. ………. [ 15.3KB/s]
    [ 2%] ………. ………. ………. ………. ………. [ 20.5KB/s]
    
    
    • D4X

    Downloader For X(文中简称为D4X)是Linux下功能强大的图形化下载工具。
    支持HTTP与FTP协议,
    具有类似NetAnt和FlashGet等多线程、
    断点续传下载
    具有连接超时断点续传
    记录下载日志
    模拟下载
    链接拖拽下载
    自动复制剪贴板链接到下载地址栏中等功能。

    1.下载和安装 D4X的下载地址为http://www.krasu.ru/soft/chuchelo/files/d4x-2.5.0final.tar.gz,下载后使用如下命令安装:
    #tar zxvf d4x-2.5.0final.tar.gz
    #cd d4x-2.5.0final
    #./configure
    #make
    #make install
    成功安装后,运行“d4x”命令便可直接运行。它的界面如图3所示,和FlashGet有点相像吧。

    2.使用和设置
    D4X的使用十分简单,下载文件时,只需在“添加新的下载任务”对话框中输入下载文件地址即可。如果下载地址需要用户名和密码,可在这个对话框中直接输入。如要计划下载,可在时间选项中设定下载时间。此外,在下载任务选项中,可设定一些下载的配置,如下载文件默认目录、默认线程个数、界面风格等。值得一提是代理选项,可指定默认的代理服务器和SOCKS5代理,具体设置如图4所示。

     

    • mms协议流媒体下载工具

    [来源]http://www.5anet.com/?module=bbs&object=bbs&action=showdetail&id=13
    [作者]黄叶
    ASFR+ 是一个专门用来下载 ASF、Wma、Wmv 格式流文件的工具.此软件是国内的 Yaan2 同志在ASFRecorder 代码的基础上加以改进做出的,这个软件在ASFRecorder 的基础上加上了分断下载、修复损坏 ASF 文件、多线程下载ASF文件,断点续传等功能。唯一遗憾就是没有GUI界面。
    安装方法:tar zxvf asfrplus.tgz
    cd asfrplus
    make
    在asfrplus目录会生成一个文件名为”asfr”的可执行文件。
    下面是它的基本用法:
    进入asfrplus的目录,输入:
    ./asfr mms://www.hehe.com/***.wma -t 3
    使用3个线程下载***.wma

    ./asfr -P http://proxy:8080 mms://www.hehe.com/***.wma
    使用代理服务器proxy:8080下载***.wma

    ./asfr mms://www.hehe.com/***.wma -T
    强制用MMST协议下载***.wma

    退出程序:Ctrl+Break

    大小: 47KB
    下载: http://www.5anet.com/software/asfrplus.tgz

     

    • 图形界面下载工具

    D)WxDfast
    WxDfast也是一个图形化的下载工具,支持多线程、断点续传等功能,最大特点是下载速度快。可在http://heanet.dl.sourceforge.net/sourceforge/dfast/wxdfast-0.2.1-src.tar.gz下载WxDfast的最新版本。然后使用如下命令进行安装:
    #tar jxvf wxdfast-0.2.1d.tar.bz2
    #cd wxdfast-0.2.1-src
    #make install
    在终端下运行“./wxdfast”命令便可运行程序。WxDfast界面非常简洁,其界面如图5所示。全英文界面使用起来可能不如KGet方便,好在它的操作和KGet、D4X基本相同,大家可参照学习,这里就不赘述了。

    E)Aria
    Aria是个小巧的多线程下载工具,简单易用的界面用起来得心应手。
    可在http://aria.rednoah.com/download_e.html下载最新版本,然后使用如下命令进行编译安装:
    #./configure
    #make
    #make install 成功安装后直接运行如下命令便可运行Aria:
    #aria&

    Aria的界面如图6所示,它的操作和D4X差不多,可参照使用。

    • 命令行下载工具

    对于喜欢命令行操作及追求高效率、高速度下载的朋友,推荐使用命令行下载工具。命令行工具不但使用方便,而且大多具有很高的下载速度及下载效率,尤其适合于大批量下载文件。下面就为大家详细介绍一下这些工具。

    A)Wget
    Wget是一个十分常用命令行下载工具,多数Linux发行版本都默认包含这个工具。

    如果没有安装可在http://www.gnu.org/software/wget/wget.html下载最新版本,并使用如下命令编译安装:
    #tar zxvf wget-1.9.1.tar.gz
    #cd wget-1.9.1
    #./configure
    #make
    #make install

    它的用法很简单,Wget使用格式如下: #wget [选项] [下载地址]

    Wget常用参数
    ◆-b:后台下载,Wget默认的是把文件下载到当前目录。
    ◆-O:将文件下载到指定的目录中。
    ◆-P:保存文件之前先创建指定名称的目录。
    ◆-t:尝试连接次数,当Wget无法与服务器建立连接时,尝试连接多少次。
    ◆-c:断点续传,如果下载中断,那么连接恢复时会从上次断点开始下载。
    –limit-rate=150k 限速150kB每秒

    HTTP和FTP代理功能,编辑其配置文件“/etc/wgetrc”即可。具体方法是使用VI编辑器打开上述文件,将 “http_proxy”和“ftp_proxoy”前的#去掉,然后在这两项后输入相应的代理服务器的地址,保存退出即可。

    Wget还可下载整个网站,如下载http://man.chinaunix.net整个Man手册中心。只需输入如下命令即可: #wget -r -p -np -k http://man.chinaunix.net

    其中-r 参数是指使用递归下载,
    -p 是指下载所有显示完整网页所以需要的文件,如图片等,
    -np 是指不搜索上层目录,-k则是指将绝对链接转换为相对链接。

    B)Prozilla
    Prozilla也是一个十分流行的命令行下载工具,支持多线程下载和断点续传功能, 但未找到代理支持功能

    可到http://prozilla.genesys.ro/下载最新的1.3.7.4安装包,下载安装包后使用如下命令进行安装:

    #tar zxvf prozilla-1.3.7.4.tar.gz
    #cd prozilla-1.3.7.4
    #./configure
    #make
    #make install Prozilla

    命令格式如下: #proz [参数] [下载地址]
    常用的选项有:
    ◆-k=n :设置n个线程下载。不加此参数指定线程数,Prozilla默认为4线程下载。
    ◆-P, –directory-prefix=DIR:指定将下载的文件保存在DIR/目录。
    ◆-r, –resume:继续下载未完成的文件。如果要指定线程数下载可用如下命令: #proz -k=5 http://64.12.204.21
    /pub/mozilla.org/firefox/releases/1.0/linux-i686/zh-CN/firefox-1.0.installer.tar.gz

    这样便以5线程进行文件的下载,并将文件保存到当前目录。

    和Wget一样,Prozilla也提供了续传功能,下载中断后,重新输入上述命令,就会出现提示续传,按R键就可继续下载了。

    D)Linuxdown
    Linuxdown是一个命令行多线程下载工具,最多可支持30线程的下载, 但未找到代理支持功能

    在https://gro.clinux.org/frs/download.php/1015/linuxdown-1.0.0.tar.gz下载最新的1.1.0版本。

    然后使用如下命令进行编译安装:
    #tar zxvf linuxdown-1.1.0.tar.gz
    #cd dandelion/
    #make
    #make install linuxdown

    格式为: #linuxdown [下载地址] [选项] [线程数]
    需要注意的是下载地址和选项都需要西文引号括起来,线程数不可超过30个。一个典型的下载如下:
    #linuxdown “http://xxx/xxx.zip” 30

  • linux工具之nmap

    http://en.wikipedia.org/wiki/Nmap

    The Network Mapper

    • 安装nmap:
    apt-get install nmap
    • 检查我所在网段有多少台“活着”的机器(P代表ping)
    root@debian:~# nmap -sP 219.xxx.xxx.0/24          #可以查看到MAC地址
    • 查看本机0-1000都开放了什么端口
    root@debian:~# nmap -p 0-1000 localhost
      • 查看同网段哪些开了 3389 端口
      root@debian:~# nmap 192.168.1.0/24 -p 3389
      • 检查我本身的机器开放了哪些端口(T代表Tcp,U代表Udp)
      root@debian:~# nmap -sTU localhost

      参数说明:
      1.SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快:

      nmap -sS 192.168.32.0/24

      2.当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描:

       nmap -sT 192.168.32.0/24

      3.UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口:

       nmap -sU 192.168.32.0/24

      以下内容来自wiki:

      Basic commands working in Nmap

      • For target specifications :检测详细信息

      nmap <target’s URL’s or IP’s with spaces between them(can also use CIDR notation)>
      e.g. : scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0–255.1–254 (The command is nmap scanme.nmap.org and similar)

      • For OS detection :检测系统版本
      nmap -O <target-host's URL or IP>
      • For Version detection:检测应用程序版本
      nmap -sV <target-host's URL or IP>
      • For configuring response timings(-T0 to -T5 :increasing in aggressiveness):   #检测反应时间
      nmap -T0 -sV -O <target-host's URL or IP>
  • SecureCRT使用整理 lrzsz

    这个必须要自已写
    因为
    以前在ssh secure shell ,putty ,SecureCRT里选择花了不少时间
    putty还是好用的,加上winscp
    用起来顺手
    但是,窗口一多,也不方便,而且SecureCRT的lrzsz用起来也是很方便

    lrzsz is a unix communication package providing the XMODEM, YMODEM ZMODEM file transfer protocols.

    决定就用SecureCRT了
    不过,还是一句话,字写的不好也不要怪笔的牌子差。自已运用命令的本领提高才是王道。
    我只收集下我自已习惯于用的和设置.

    会话里使用courier new 字体大小为10pt 这也是因为用putty用惯了
    在会话选项–仿真–终端里勾选linux 勾选ANSI颜色 勾选使用颜色方案
    要使用rz sz和本机传一些小文件,在服务端也要装,如debian下
    aptitude install lrzsz
    rz -be (-b代表binary,-e代表略过一些控制字符) 上传到远程机器
    sz 代表下载到本机

  • debian pptp vpn安装设置 | pptp限单用户

    1.安装PPTP VPN

    apt-get update
    apt-get upgrade
    apt-get install pptpd

    2.配置PPTP VPN

    使用你喜欢的编辑器,编辑/etc/pptpd.conf 。修改localip,remoteip的ip地址段,例如修改为:

    localip 10.10.10.1
    remoteip 10.10.10.100-200

    编辑/etc/ppp/pptpd-options,修改ms-dns 的dns地址,例如可以修改为:

    ms-dns 211.65.64.65
    ms-dns 8.8.8.8

    编辑/etc/ppp/chap-secrets,设置用户名密码,格式如下:

    user1 pptpd password1 *
    user2 pptpd password2 10.10.10.102

    格式一为不限定分配ip地址,格式二为限定分配ip地址。

    编辑/etc/sysctl.conf,修改#net.ipv4.ip_forward=1为net.ipv4.ip_forward=1。执行如下命令(打开转发):

    sysctl -p

    3.iptables防火墙设置(iptables转发规则)

    iptables -A INPUT -p gre -j ACCEPT
    iptables -A OUTPUT -p gre -j ACCEPT
    iptables -A INPUT -p tcp --sport 1723 -j ACCEPT
    iptables -A OUTPUT -p tcp --dport 1723 -j ACCEPT
    iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

    Debian默认防火墙是全通的,因此前四行可以选择不执行。建议将第五行加入到/etc/rc.local。如果不加,有可能会出现连上VPN,但是上不了网的情况

    像vps,ifconfig后要通过venet0来走

    iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o venet0 -j MASQUERADE

    没有ppp设备,需要执行如下命令:

    mknod /dev/ppp c 108 0

    4.启动PPTP 服务

    执行如下命令,启动PPTP服务:

    /etc/init.d/pptpd restart

    pptp搭建的vpn代理上网很慢
    解决:

    在pptp所在的linux服务的iptables的*filter表中加入
    -I FORWARD -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1356
    
    来源:http://hi.baidu.com/624686/blog/item/5f3e32c428e4e0a38226acb1.html
    
    方法2:
    在/etc/ppp/ip-up最后添加一行
    /sbin/ifconfig $1 mtu 1356
    重启pptpd
    /etc/init.d/pptpd restart

    限制pptp vpn用户单个连接的简单方法

    实现方法很简单。只要在/etc/ppp文件夹下面建立一个名为auth-up的文件。在里面写入如下内容即可:
    
    #!/bin/sh
    # get the username/ppp line number from the parameters
    REALDEVICE=$1
    USER=$2
    # create the directory to keep pid files per user
    mkdir -p /var/run/pptpd-users
    # if there is a session already for this user, terminate the old one
    if [ -f /var/run/pptpd-users/$USER ]; then
    kill -HUP `cat /var/run/pptpd-users/$USER`
    fi
    # copy the pid file of current user to /var/run/pptpd-users
    cp "/var/run/$REALDEVICE.pid" /var/run/pptpd-users/$USER
    
    来源:http://vastars.info/linux/pptp-vpn.html

    ——below add at 2011-05-17——

    方便查看在线用户
    #vim ~/.bashrc
    最后一行加入

    alias online='last | grep still | grep ppp |sort -k 2,2'

    #source ~/.bashrc