sshpass

在使用 sshscp 等命令进行远程操作的时候,必须手动输入密码,这就为自动化的执行造成困扰。sshpass 可以在命令行直接使用密码来进行远程连接和远程拉取文件,可以很好的解决这个问题。

安装 sshpass

Linux 软件工具安装

# ubuntu
$ apt install sshpass
# 或
$ apt-get install sshpass

# centos
yum -y install sshpass

源码安装

sshpass 源码防止在 https://sourceforge.net/projects/sshpass/files/sshpass/ ,用户可以选择版本下载:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zk90NG8H-1614319020782)(.\res\image-sshpass address.png)]

# 下载
$ sudo wget https://sourceforge.net/projects/sshpass/files/sshpass/1.06/sshpass-1.06.tar.gz 

# 解压
$ tar xvzf sshpass-1.06.tar.gz 

# 编译
$ cd sshpass-1.06
$ ./configure 
$ make 

# 安装
$ make install

# 安装完成后,在 /usr/local/bin 目录下,可以找到可执行文件 sshpass

测试 sshpass

我们准备两台 Ubuntu 系统虚拟机,IP 地址分别为 192.168.194.131192.168.194.132,两台虚拟机均按照 ssh,并开启了 root 用户远程访问权限。

192.168.194.131 系统中我们安装 sshpass,然后创建一个 shell 脚本 test.sh,内容如下:

# test.sh
echo "This is a test shell, from 192.168.194.131"

然后我们在创建一个 shell 脚本 remote_exec.sh ,内容如下:

# remote_exec.sh
sshpass -p '123456' ssh root@192.168.194.132 "cd /home; rm -rf test.sh"
sshpass -p '123456' scp test.sh root@192.168.194.132:/home/
sshpass -p '123456' ssh root@192.168.194.132 "cd /home; chmod a+x test.sh; ./test.sh"

然后,赋予 remote_exec.sh 可执行权限,并执行该脚本:

$ chmoa a+x remote_exec.sh
$ ./remote_exec.sh
This is a test shell, from 192.168.194.131
# 执行完后在 192.168.194.131 Terminal 会打印 test.sh 输出语句
# 同时,在 192.168.194.132 的 /home 目录可以找到 test.sh 文件

执行 remote_exec.sh 脚本将把 192.168.194.132 系统 /home 目录下的 test.sh 文件删除(如果存在的话),然后将 192.168.194.131 系统中当前目录下的 test.sh 文件拷贝到 192.168.194.132 系统 /home 目录下,并赋予可执行权限,然后在 192.168.194.132 系统中执行 test.sh

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二流人物

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值