1,远程ssh执行命令中含有变量
ssh -n -o StrictHostKeyChecking=no $line "sudo cat /root/.mysqldba_emar|awk -F '=' '\$1 ~/MYSQL_PWD/{print \$2}'"
如果想将结果存入某个变量则可以(去掉commd 部分的双引号)
pwd=`ssh -n -o StrictHostKeyChecking=no $line sudo cat /root/.mysqldba_emar|awk -F '=' ' \$1 ~/MYSQL_PWD/{print \$2}'`
其中 -n 需要注意,如果你是在while循环(ip列表)里使用ssh远程登录那么-n是必须的否则while循环只会执行一次就退出
2,sed 在指定的行后面添加一行以及使用sed 进行字符替换
sed '/144.101.124.107/a\add by sed' lidan.test
UPDATE_SQL=`echo $UPDATE_SQL|sed s/emarmysqldba/$PASS/g`
3,ssh远程批量执行命令 出现sudo: sorry, youmust have a tty to run sudo
这种情况可以执行sudo sed -i 's/Defaults requiretty/#&/g' /etc/sudoers 来解决
4,字符串脚本中如何保留'' 或 ""
IS_BANGONG="mysql -umysqldba -pxxxx -e "'"select count(1) num from mysql.user where host like '"'124.205.%'"'"'" |awk -F '|' 'NR==2{print \$1}'"
这种写法经常在批量更新mysql的时候使用,在运行时sql字符串会被解析为正常的sql语句:
... -e "select count(1) num from mysql.user where host like '124.205.%' " ...
5,回到上一次的目录
cd -