shell脚本带密码远程登录方法

shell脚本带密码远程登录方法

文章目录

  • shell脚本带密码远程登录方法
    • 1 sshpass安装方法
    • 2 用法
    • 3 具体使用
    • 4 如何和远程连接服务断开

在写shell脚本的时候会经常遇到需要去另一个服务器上 执行操作,例如连另一个服务器上的Mysql。但是常用的ssh是没有附带密码的,而且又不想创建公钥私钥这种操作。那怎么办呢,可以通过sshpass来解决。

1 sshpass安装方法

sshpass在centos上安装方法:

    yum install -y epel-release  
    yum install -y sshpass

ubuntu安装

 apt-get  install sshpass

2 用法

sshpass -p <服务器密码> ssh -tt root@${服务器IP}
例如: sshpass -p 123456 ssh -tt [email protected]

3 具体使用

例如我们想写个脚本到远程服务器的Mysql上去建个新表,怎么做呢?具体看如下的脚本:

#!/bin/bash

set -e

MYSQL_HOST="10.1.2.3"
HOST_PASSWORD=hadoop
MYSQL_USER=test
MYSQL_PASSWORD=root

sshpass -p ${HOST_PASSWORD} ssh -tt root@${MYSQL_HOST} << EOF
mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD}
DROP DATABASE IF EXISTS ki_docker;
CREATE DATABASE IF NOT EXISTS ki_docker DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
EOF
echo "finished"

4 如何和远程连接服务断开

以上脚本即可执行完成对远程服务器上的mysql里建个数据库,但是还是最后一句echo "finished"却无法输出。因为没从远程连接断开,怎么断开呢,只需要加两行,exit先退出数据库,然后exit 0断开远程连接,回到现在的执行脚本里继续执行后续的shell命令。

具体如下:

#!/bin/bash

set -e

MYSQL_HOST="10.1.2.32"
HOST_PASSWORD=hadoop
MYSQL_USER=test
MYSQL_PASSWORD=root

sshpass -p ${HOST_PASSWORD} ssh -tt root@${MYSQL_HOST} << EOF
mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD}
DROP DATABASE IF EXISTS ki_docker;
CREATE DATABASE IF NOT EXISTS ki_docker DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
exit;
exit 0
EOF
echo "finished"

你可能感兴趣的:(shell)