首页 > 系统相关 >shell脚本使用ssh远程执行命令通过密码的方式登录

shell脚本使用ssh远程执行命令通过密码的方式登录

时间:2023-05-17 15:50:15浏览次数:33  
标签:执行命令 shell tt 命令 ssh sshpass 远程

shell脚本使用ssh远程执行命令通过密码的方式登录

sshpass 是一个在非交互式 ssh 会话中自动输入密码的工具。它可以直接在命令行中指定密码,因此可以用于 Shell 脚本等自动化场景。在 Red Hat 系统中,可以通过 epel-release 源安装 sshpass。

epel-release 源是 Extra Packages for Enterprise Linux (EPEL) 的缩写,是由 Fedora 社区维护的,为 RHEL 和 CentOS 提供额外的软件包和库。默认情况下,RHEL 和 CentOS 并没有启用 EPEL 源,需要手动进行配置。

1 sshpass安装方法

sshpass在centos上安装方法

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

sshpass在ubuntu安装

apt-get  install sshpass

2 用法

sshpass -p <服务器密码> ssh -tt root@${服务器IP}

例如: sshpass -p 123456 ssh -tt [email protected]
-tt 的意思:
在使用 sshpass 命令调用 ssh 时,通常建议使用 -t 选项来分配为 ssh 命令启动的伪终端。这样可以使远程 shell 在连接关闭后正常终止。如果不使用 -t 选项,可能会导致远程 shell 无法正确退出。
而 -tt 选项是在 -t 的基础上增加了一次远程命令的强制性 tty 分配,它的意思是在远程主机上分配一个强制性的 tty 终端,无论是否需要。其实,-tt 选项是为了解决不同版本的 SSH 之间的兼容性问题而设置的。

对于简单的命令:

  如果是简单执行几个命令,则:

sshpass -p <服务器密码> ssh -tt root@${服务器IP}  "cd /home ; ls"

  基本能完成常用的对于远程节点的管理了,几个注意的点:

  1. 双引号,必须有。如果不加双引号,第二个ls命令在本地执行
  2. 分号,两个命令之间用分号隔开

对于脚本的方式:

  有些远程执行的命令内容较多,单一命令无法完成,考虑脚本方式实现:

#!/bin/bash

HOST="10.0.0.1"
HOST_PASSWORD=123456

sshpass -p ${HOST_PASSWORD} ssh -tt root@${HOST}  > /dev/null 2>&1 << EOF
cd /tmp
mkdir  abc
touch 1.txt
exit
EOF
echo "finished"

远程执行的内容在“<< EOF ” 至“ EOF ”之间,在远程机器上的操作就位于其中,注意的点:

  1. << EOF,ssh后直到遇到EOF这样的内容结束,EOF可以随便修改成其他形式。
  2. 重定向目的在于不显示远程的输出了
  3. 在结束前,加exit退出远程节点

标签:执行命令,shell,tt,命令,ssh,sshpass,远程
From: https://www.cnblogs.com/scfssq/p/17408934.html

相关文章

  • PowerShell里cd文件夹报错,是因为文件名称中包含空格
    PowerShell里cd文件夹报错,是因为文件名称中包含空格。需要将文件包在引号中。 cd"C:\ProgramFiles"  ......
  • 服务器配置ssh密钥登录
    前置环境windows10,centos71.windows本地生成密钥执行以下命令ssh-keygen-trsa一路回车默认生成到C:\Users\Administrator.ssh生成id_rsa,id_rsa.pub两个文件,分别是私钥/公钥2.配置服务器2.1配置服务器文件权限$chmod-R700~/.ssh/$chmod600~/.......
  • shell 中怎样去除数据中^M 字符
    这个符号^M在Linux文本文件中能看出来,在Windows系统下看不出来,因为这是windows系统下的回车换行符号。有2中方法可以去掉这个回车换行符号。第一种是全文替换,第二中是先搜索字符串,然后用sed命令替换。方法一:用vim打开文件,输入以下命令vimfilename然后在vi命令模式下输入以......
  • ssh连接报错处理
    问题现象[root]#[email protected]/etc/ssh/ssh_configline59:Unsupportedoption"gssapiauthentication" 处理方法:注释/etc/ssh/ssh_config文件第59行[root]#vi/etc/ssh/ssh_config#GSSAPIAuthenticationyes 重启sshd服务[root]#system......
  • Xshell配色方案导入
    1.背景Xshell自带的配色方案不习惯,找了一些配色方案https://github.com/netsarang/Xshell-ColorScheme选了Obsidian.xcs先用着2.引用xshell配色方案分享......
  • Linux 中 shell 脚本实现根据gff统计每一个基因的转录本数目
     001、生成基因名称的列表awk-F"\t"'$3=="gene"&&$NF~/gene=/{print$NF}'chr1.gff|sed's/\(.*\)\(gene=[^;]\+\)\(.*\)/\2/'|sort|uniq>gene.list 002、 ......
  • Powershell 无法将“mysql”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
    Win键+Q,在搜索框内输入Powershell。点击以管理员身份运行Powershell。粘贴代码 set-executionpolicyremotesigned 按回车键执行命令。输入A,按回车键确认。 ......
  • shell计算2
    bc命令bc命令当作计算器来用的,命令行的计算器交互式的操作,小数的计算bc命令结合管道符来计算数学......
  • Shell_3
    echo命令1.显示普通字符串:echo"Itisatest"这里的双引号完全可以省略,以下命令与上面实例效果一致:echoItisatest 2.显示转义字符echo"\"Itisatest\""结果将是:"Itisatest"同样,双引号也可以省略 3.显示变量read命令从标准输入中读取一行,并把输入行......
  • SSH 整合 Activiti
    Spring/Activiti/JPA(Hibernate)Integration[url]http://www.kaixinwenda.com/article-derek_zhang_-8364934.html[/url]Act的官方推荐的orm是mybatis,由于项目需要hibernate,所以做了一次Act和SSH的整合。1.首先添加jar依赖。act的engine.jar,spring.jar包。项目前期比较懒所......