Shell常用技巧

来源:互联网 发布:部落冲突气球数据 编辑:程序博客网 时间:2024/06/11 09:57

shell去掉两端的空格(类似python的strip功能)

echo "   abs  ssa " |sed 's/ *$//g'|sed 's/^ *//g'

shell删除匹配的两行之间的内容(包含匹配的行)

比如,文档myfile.txt,内容如下:

*********a *********b ******

删除a,b行之间的内容,最终得到

*************

使用sed命令匹配删除

sed -i '/a/,/b/d' myfile.txt

shell调用expect实现自动交互

上传文件到指定设备

调用方法:

假设脚本名称为upload.sh

bash upload.sh 设备IP地址 设备用户 设备用户密码

脚本代码

#!/bin/bashif [ $# -lt 3 ]; then    echo "Usage: $0 ip user password"    exit 1else    ip=$1    user=$2    password=$3fisrc=./test #要拷贝的源目录dst=/home/$user/ #远端目录#上传文件expect <<-EOFset timeout 300 #设置超时时间值大些避免拷贝文件过多超时spawn scp -r $src $user@$ip:$dstexpect {    "(yes/no)?"    {        send "yes\r"        expect "*assword:" { send "$password\r"}    }    "*assword:"    {        send "$password\r"    }}expect eofEOF

执行远端代码

调用方法:

假设脚本名称为execute.sh

bash execute.sh 设备IP地址 设备用户 设备用户密码

脚本代码

#!/bin/bashif [ $# -lt 3 ]; then    echo "Usage: $0 ip user password"    exit 1else    ip=$1    user=$2    password=$3ficommand="bash /home/$user/test.sh" #要执行的命令脚本#执行命令expect <<-EOFset timeout 300 #设置超时时间值大些避免执行命令时间过长超时spawn ssh $user@$ip $commandexpect {    "(yes/no)?"    {        send "yes\r"        expect "*assword:" { send "$password\r"}    }    "*assword:"    {        send "$password\r"    }}expect eofEOF