• 1. here document

    没什么好说的,好用的机制。除了在shell里实现自动应答,还可以变相作为多行注释。目前为止还没找到其他有趣的用法,有待继续挖掘。

    2. ftp与here document

    以下,实现已知密码的前提下,远程获取sybase IQ的全部系统运行日志。

    #!/bin/bash
    
    USER=sybase
    PSWD=sybase
    
    mkdir sybiqlog
    ftp -n 135.32.82.116 << FTPCMDS
    quote user $USER
    quote pass $PSWD
    cd /export/home/sybase/ASIQ-12_7/logfiles
    lcd sybiqlog
    prompt
    mget *
    bye
    FTPCMDS

    有两个要点,ftp的-n参数防止了自动进入交互登录的过程,而只是进入ftp>提示符;而后面user和pass指令前面的quote,会按次序将账户和密码送给服务端

    而在这里,仍然是可以用脚本参数临时指定账户和密码的,比明文写在脚本里更安全一些。

    ftp+Here Document,鸣谢以下地址:http://www.stratigery.com/scripting.ftp.html

    3. SSH与here document

    懒了自然想要更懒,自动收集远端服务器上想要关注的进程的信息,就不用时时登录上去看了。代码如下,不过……

    #!/bin/bash
    
    ssh 135.32.82.116 << SSHCMDS
    cd /export/home/xxxx/bin
    ./prox.sh
    exit
    SSHCMDS

    问题来了,执行的时候它还是跟你要登录密码,SSH不是FTP,这个不是Here Document里加一句quote就能搞定的了,何解?

    接下来的跟Here Document没什么关系。SSH要实现远程自动登录,已经找到最懒的办法如下:

    a. 执行ssh-keygen -d,生成本地公钥和私钥,提问passphrase的时候,直接回车,表示私钥密码留空,否则后面登录远端服务器的时候还是会提示要求输入密码。

    b. 执行ssh-copy-id -i KEY_PATH USR@SERVER,KEY_PATH就是刚才生成的密钥,要指定路径和文件名;USR@SERVER则指定你要用哪个账户登录哪个服务器,SERVER这里可以是IP地址或者域名随意,确保可以远程访问即可。

    c. 现在可以执行ssh SERVER了,直接登录完毕进入命令行提示符。

    有了以上的铺垫,前面那个脚本里带了Here Document的ssh命令就可以执行下去了。不过缺点是安全性多少有点下降。其实有更安全的办法,但会比较麻烦。后续继续研究。

    SSH的自动登录,鸣谢fwolf先生:http://www.fwolf.com/blog/post/279

  • 2012-04-02

    关于sed - []

    起因是在solaris下用sed过滤文本中的制表符,谁曾想solaris不识别“\t”的写法,费了半天劲才查到可以用Ctrl+v、Ctrl+i的方法输入,代替转义字符“\t”。

    帮到了忙的这篇blog地址如下:

    http://blog.chinaunix.net/uid-26371116-id-3068272.html

  • 2012-03-26

    关于selinux - []

    刚刚知道在SuSE发行版中,不叫这个名字,SuSE自己的实现,名字叫App Armor……

    某台SLES9服务器,vsftpd不能上传,返回553,且不能获取远端目录列表,返回226。原来还有App Armor这等玄机,关掉之后自然就好了。

  • twitter storm

    clojure

    hadoop

    OLTP

    ==========================

    话说,快两年没在这里写东西了,账户居然还在,甚慰

  •   2010年12月9日,早晨五点半,或者六点,我醒了。

      越来越没有心情和气力来码字了。