Linux Shell脚本远程登录带密码用户账户,并执行命令

本文介绍如何使用Shell脚本结合sshpass实现Linux系统上的批量远程登录和命令执行,解决多台机器同时操作的繁琐问题,提高工作效率。

通常我们在终端上可以直接执行命令,实现Linux系统的远程登录和执行相关操作等。但有时候机器比较多而且执行的命令都比较相似的时候,直接在终端上操作的方法就显得比较繁琐,此时可以考虑使用Shell脚本。

需要的软件:openssh,sshpass

一、远程连接

使用远程登录的方法包括远程登录服务器的搭建网上有很多教程,这里不再赘述,个人推荐使用openssh软件,这里可以简单说一下使用方法,一般

ssh username@IP

username是远程登录的用户名,IP是远程登录的机器的IP地址。一般使用该命令的时候是需要输入密码的,这个时候就存在终端与用户交互的问题,对于写Shell脚本的来说不是一件好事。为了解决这个问题,有人提议使用免密登录的方法,参考评论区1参考评论区2,但是这样很不安全。还有一种方式是带密码登录的方法,使用expect,或者sshpass的方法,个人推荐使用sshpass,值得一提的是,若无管理员权限安装sshpass的时候,需要在./configure 后增加

--prefix=yoursshpassPath指定安装位置,然后在bashrc里配置一下。sshpass基本用法,

sshpass -p yourpassword ssh username@IP

二、远程执行命令

参考这篇博文的做法,

#!/bin/bash
ssh user@remoteNode > /dev/null 2>&1 << eeooff
cd /home
touch abcdefg.txt
exit
eeooff
echo done!

不过我们需要在此基础上进行修改。

#!/bin/bash
OriginHOME=$HOME                                                           #存储原始环境变量

export HOME=/home/remoteusername                                           #提前修改环境变量
sshpass -p yourpassword ssh username@IP -tt > /dev/null 2>&1 << remotessh  #远程登录
cd $HOME                         
touch example.txt                                                          #远程创建文件
mkdir -pv test/test1/test2                                                 #远程创建文件夹
echo "hello world!" >> $HOME/example.txt                                   #远程写入文件
exit                                                                       #退出远程账户                                    
remotessh                                                                  #退出远程连接

export HOME=$OriginHOME                                                    #还原环境变量

需要特别注意的是,使用远程连接时候是需要提前修改环境变量的,例如$HOME,如果不对应修改的话,可能无法实现文件或文件夹创建、修改等命令。最后退出远程连接的时候,建议将环境变量还原(不还原也行,系统会自动处理)。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值