iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >sshpass的安装与使用
  • 918
分享到

sshpass的安装与使用

linuxsshpassscpssh脚本 2023-09-01 06:09:44 918人浏览 安东尼
摘要

1. sshpass的定义与安装 (1)定义 sshpass 的定义:ssh 登陆不能在命令行中指定密码,sshpass 的出现则解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量

1. sshpass的定义与安装

(1)定义

sshpass 的定义:ssh 登陆不能在命令行中指定密码,sshpass 的出现则解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。

(2)使用sshpass的原因

博主目前所做的项目,属于面板行业,项目上线后,同一时间需要维护的服务器数量很多,当下就有一百二十多台服务器,后续还有追加,最终数量在448台服务器。

每台服务器对应一个面板生产系统,这多个系统的DB数据来自同一个DB服务器上,当某个生产系统的数据发生变化时,影响的不只是一个服务器,而是一系列多台服务器都要做对应的修改。

这里涉及到修改日志清理配置、数据库基础数据、新增服务功能等,而在一百多甚至四百多台服务器的场景下,由人员手动去操作,是个傻逼的行为。

我们使用sshpass来进行远程批量操作,批量修改、添加日志清理工具的配置内容;在不影响生产的情况下不停机用sshpass去批量修改基础数据,并使用预留的reload功能重载数据;此外还有新增一些比如服务的进程监控的功能进行服务化。

这一系列操作都可以通过sshpass进行远程操作,只需几行或几十行 shell脚本就可以做到。最大限度提高效率和不影响产能。

(3)安装

Ubuntu

apt-get  install sshpass

centos:

# 源码包安装 wget Http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz  tar xvzf sshpass-1.05.tar.gz  cd sshpass-1.05.tar.gz  ./configure  make  make install # yum安装yum  -y install sshpass

2. sshpass 的参数

sshpass安装后,可以在控制台输入sshpass命令查看所有选项参数:$ sshpassUsage: sshpass [-f|-d|-p|-e] [-hV] command parameters-f filename   Take passWord to use from file-d number     Use number as file descriptor for getting password-p password   Provide password as argument (security unwise)-e            Password is passed as env-var "SSHPASS"With no parameters - password will be taken from stdin-P prompt     Which string should sshpass search for to detect a password prompt-v            Be verbose about what you're doing-h            Show help (this screen)-V            Print version infORMationAt most one of -f, -d, -p or -e should be used如上所示,command parameters为你要执行的需要交互式输入密码的命令,如:ssh、scp等。当sshpass没有指定参数时会从stdin获取密码,几个密码输入相关参数如下:-f filename:从文件中获取密码-d number:使用数字作为获取密码的文件描述符-p password:指定明文本密码输入(安全性较差)-e:从环境变量SSHPASS获取密码

注意:-p 也可用于指定port端口,一般在 username@ip 前使用。

3. 基于sshpass登录远程服务器与验证

sshpass:用于非交互的ssh 密码验证。参数 p 的使用:使用 -p 参数指定明文密码,然后直接登录远程服务器。 它支持密码从命令行,文件,环境变量中读取

(1)直接远程连接某台主机:

命令:sshpass -p '密码' ssh root@192.168.11.11     【默认为22端口】

 (2)远程连接指定ssh的端口:

4. 远程执行命令或脚本( sshpass+ssh)

使用sshpass远程免密,在远程主机上执行shell命令,如下远程执行命令:touch /opt/file.txt

[root@linkhot opt]# sshpass -p 'root' ssh root@192.168.126.135 "cd /opt && touch file.txt"

如果是执行脚本,则将 touch file.txt 改成 sh file.sh就行了。

5. 远程文件拉取与上传 (sshpass+scp)

文件的拉取与上传使用 scp 参数。

(1)拉取文件

命令:sshpass -p 'password' scp username@ip:/远程文件目录/远程服务器文件 /本地文件目录/

[root@linkhot opt]#  sshpass -p 'root' scp root@192.168.126.135:/opt/file.txt /tmp/

(2)上传文件

命令:sshpass -p 'password' scp /本地路径/文件名 username@IP:/远程服务器目录

[root@linkhot tmp]# sshpass -p 'root' scp /opt/file.txt root@192.168.126.135:/home

6.从文件读取密码、ip、端口

(1)从密码文件读取文件内容作为密码去远程连接主机

7. 连接远程服务器批量操作

使用脚本语言执行sshpass,并从文件读取pass、ip

7.1 当前脚本文件用于连接远程服务器执行命令。

(1)testScript.sh

#!/bin/bashinput=systemIpwhile IFS= read -r ipdo   arr=(${ip//,/ })if ping -c1 -W4 ${arr[1]} >/dev/null 2>&1;then     echo "---current system:${arr[0]} ---"    sshpass -f password ssh -o StrictHosTKEyChecking=no -p 22 root@${arr[1]} "cat /tmp/file.txt" < /dev/nullelse    echo "$ip: Ping Fail - `date`"fidone < "$input"

(2)systemIp

当前文件用于记录要连接的远程服务器名与ip.

[root@linkhot sshpass]# cat systemIp LinkHot,192.168.126.135

(3)执行testScript.sh 脚本查看远程服务器的文件

7.2 连接远程服务器进行批量上传文件的脚本如下:

#!/bin/bashinput=systemIpwhile IFS= read -r ipdo   arr=(${ip//,/ })if ping -c1 -W4 ${arr[1]} >/dev/null 2>&1;then     echo "---current system:${arr[0]} ---"    sshpass -p 'root' scp -o StrictHostKeyChecking=no -P 22 ./file.txt root@${arr[1]}:/opt/file.txtelse    echo "$ip: Ping Fail - `date`"fidone < "$input"

7.3 连接远程服务器进行批量操作DB的脚本如下:

以下是连接远程服务器的postgresql进行DB操作的脚本。

#!/bin/bashinput=systemIpwhile IFS= read -r ipdo  arr=(${ip//,/ })if ping -c1 -W4 ${arr[1]} >/dev/null 2>&1;then    echo "---current system:${arr[0]} ---"    PGPASSWORD=123456 /home/postgres/db/pgsql/bin/psql -h ${arr[1]} -p 5432 -U postgres $PGPASSWORD -d "testdb" -c "SELECT * FROM "wechat_user"  WHERE "key" = 'WSP'else    echo "$ip: Ping Fail - `date`"fidone < "$input"

8. 常见问题

(1)问题现象如下所示:使用sshpass没有反应,以为sshpass装错了,但linux装的应该不会出错

rpm -qa | grep sshpasssshpass-1.06-2.el7.x86_64

解决措施:

方法一:使用ssh root@192.168.126.135命令先建立链接记录

 

 方法二:可以添加-o StrictHostKeyChecking=no选项【表示远程连接时不提示是否输入yes/no】

来源地址:https://blog.csdn.net/weixin_42405670/article/details/127191983

--结束END--

本文标题: sshpass的安装与使用

本文链接: https://www.lsjlt.com/news/387639.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • sshpass的安装与使用
    1. sshpass的定义与安装 (1)定义 sshpass 的定义:ssh 登陆不能在命令行中指定密码,sshpass 的出现则解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量...
    99+
    2023-09-01
    linux sshpass scp ssh 脚本
  • linux中如何使用sshpass
    这篇文章给大家分享的是有关linux中如何使用sshpass的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在大多数情况下,Linux 系统管理员使用 SSH 登录到程 Linux 服务器时,要么是通过密码,要么是...
    99+
    2023-06-16
  • tcpreplay的安装与使用
    一、背景介绍 tcpreplay是一种pcap包的重放工具, 它可以将用ethreal, wireshark工具抓下来的包原样或经过任意修改后重放回去. 它允许你对报文做任意的修改(主要是指对2层, ...
    99+
    2023-10-24
    网络 linux 服务器 tcp
  • npm的安装与使用
    目录一、由来1、在 GitHub 还没有兴起的年代,前端是通过网址来共享代码2、GItHub 兴起之后,社区中也有人使用 GitHub 的下载功能:3、麻烦4、具体步骤5、发展二、n...
    99+
    2024-04-02
  • MinIO的安装与使用
    MinIO的安装与使用 一、MinIO是什么?二、MinIO安装(centos7)2.1 下载MinIO2.2 启动MinIO2.3 修改配置2.4 编写启动脚本,以及加入到systemctl中 三、Springboot集成Mi...
    99+
    2023-08-18
    linux 开发语言 java 服务器
  • Composer 安装与使用
    一、composer 安装 进入系统的  cd /usr/local/bin   目录 执行安装命令: curl -sS https://getcomposer.org/installer | php 重命名 composer.phar...
    99+
    2023-09-04
    composer php 开发语言
  • Vue安装与使用
    目录1、Vue安装方式1:CDN引入方式2:直接下载引入方式3:npm安装2、基本使用前言: Vue(读音/vjuː/,类似于view) 是一套用于构建前后端分离的框架。刚...
    99+
    2024-04-02
  • WinHex安装与使用
    目录 下载WinHex 安装WinHex 查看现成的磁盘文件 手动创建磁盘文件 创建磁盘文件 创建分区 安装引导程序 查看磁盘 下载WinHex 下载链接: WinHex: Hex Editor & Disk Editor, Comp...
    99+
    2023-09-06
    linux 运维 服务器
  • s3cmd安装与使用
    一、安装 1.下载安装包。 这里我们使用s3cmd-1.0.0.tar.gz安装包 2.解压安装包 tar xzvf s3cmd-1.0.0.tar.gz 3.移动路径 mv s3cmd-1.0.0 /usr/local/s3cmd 4.创...
    99+
    2023-01-31
    s3cmd
  • phpstorm+xdebug的安装与使用
    工具和环境 phpstorm 2018 php5.6 线程安全 xdebug  1.下载和安装xdebug 1.1 查看自己phpinfo信息 比如我这里是php 5.6 ,线程安全版本 1.2 xdebug 官网 Xdebug:...
    99+
    2023-09-12
    phpstorm php apache
  • wget 的安装与使用(Windows)
    目录  一、正确的安装!!!(直接安装请看这里) 二、wget的下载与安装(错误的安装) 1.下载 2.安装 3.配置环境  4.验证是否安装成功 5.可能出现的问题 三、wget的卸载(未使用方法一下载过的请忽略) 四、wget的使用 ...
    99+
    2023-09-03
    linux windows servlet 服务器
  • Java的jps使用与安装
         这两天处理系统线上问题处理的崩溃,动不动就线上接口查询速率过慢,出现cpu飙升,对于这种情况可使用top,查命令,查网络,然后 jps、jstack、jmap、jhat、jstat、hprof ,这里主要介绍jps,但对其他的指令...
    99+
    2023-09-18
    java 开发语言
  • Tomcat 与 maven 的安装与使用教程
    目录Tomcat1、下载2、重要目录3、使用 Tomcat3.1、启动 Tomcat3.2、使用浏览器访问 Tomcat3.3、通过 webapps 目录部署页面Maven1、什么是...
    99+
    2024-04-02
  • Composer安装与PHPWord的下载与使用
    PHP之PHPWord安装与使用——Composer安装PHPWord 关于Composer,菜鸟里有简单的介绍与使用说明——Composer 安装与使用 Composer是PHP 的一个依赖管理工具...
    99+
    2023-09-17
    composer php
  • Maven私库的安装与使用
    Maven私库是指自己搭建的Maven仓库,用于存储和管理项目的依赖库。搭建私库可以提高项目构建的速度,并且可以方便地管理自己开发的...
    99+
    2023-08-25
    Maven
  • vnc view安装与使用
    vnc view安装与使用 1. 安装 vnc远程连接,需要在服务器端安装vnc server,在客户端安装vnc viewer 。 这里我主要是研究如何在自己的电脑安装vnc viewer,来远程连...
    99+
    2023-09-10
    服务器 linux 运维
  • R.swift的使用与安装教程
    为什么使用R.swift R.swift可以获取强类型、自动完成的资源,如图像、字体和段落完全类型化。更少的强制转换和猜测方法将返回什么编译时检查,运行时不再有导致应用程序崩溃的错误...
    99+
    2024-04-02
  • Ireport的安装与使用教程
    Ireport的安装及使用 一、 安装ireport 1.点击安装包,可以一直点击下一步,安装完成。 2.安装完成后,要在如下安装目录下添加ojdbc14.jar。 3.数据源的...
    99+
    2024-04-02
  • think-queue安装与使用
    官方介绍(可忽略) think-queue是ThinkPHP官方提供的一个消息队列服务,是专门支持队列服务的扩展包。think-queue消息队列适用于大并发或返回结果时间比较长且需要批量操作的第...
    99+
    2023-09-04
    php
  • gearman的安装与使用示例
    Gearman是一个开源的分布式作业调度系统,可以实现分布式任务调度和并行计算。下面是Gearman的安装和使用示例:1. 安装Ge...
    99+
    2023-08-24
    gearman
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作