概述
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 root@10.1.1.1
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脚本带密码远程登录方法shell脚本带密码远程登录方法的全部内容,希望文章能够帮你解决shell脚本带密码远程登录方法shell脚本带密码远程登录方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复