`

Linux下使用SSH非交互式远程执行命令脚本

阅读更多
原创文章,转载请注明— 作者: 黄文海 出处: http://viscent.iteye.com/
  
http://blog.viscenthuang.info
     非交互式在远程主机上执行命令或者脚本可以帮助我们快速完成一些任务。比如,在集群环境中,同时在各个结点上的日志文件中查询特定的关键字。
     通过SSH命令远程执行命令首先需要建立相关主机间的信任关系。否则,在执行命令前SSH命令会提示你输入远程主机的密码,这就产生了系统与人的交互,不利于脚本的自动化。建立主机间信任关系的方法如下:
假设我们有两台主机。主机名分别为linuxa和linuxb。首先在linuxa上以当前用户运行如下命令生成本主机的公钥和私钥文件:
ssh-keygen -t rsa
     上述命令执行后,隐藏目录~/.ssh下会出现两个文件:id_rsa和id_rsa.pub。其中,id_rsa.pub为公钥文件。将该文件的内容追加到对端主机linuxb上~/.ssh目录下的authorized_keys文件中。若该文件不存在,可自行创建之。下面是一个id_rsa.pub文件示例的文件内容:
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtbW/vKjrIkTfFjSJP9FyVb3kQStc31oBuiKVaCZzoejxSM2+ck6CB09l4BoFujpI0+omL4NptxkEAgkCGnMco2yXrVSOqhqyaQV2BnDPkyMoEq2MGB9hSc9xQKa+Q== viscent@viscent

     接下来,就可以在不输入密码的情况下在远程主机私执行命令了。命令格式如下:
     ssh 远程用户名@远程主机IP地址 ‘远程命令或者脚本’
     比如,
    ssh userA@192.168.0.6 'hostname'
    上述命令执行后,终端输出的是对端主机的主机名,而不是你当前登录的主机的主机名。说明hostname这个命令其实是在对端主机上运行的。
    若要远程执行脚本,只需要将上面的命令的第三个参数改为要执行的远程脚本的文件名全称即可。比如:
    ssh userA@192.168.0.6 '/home/userA/script/test.sh'
    需要特别注意的是:当远程脚本中使用了一些命令,而这些命令被Shell解析器的识别依赖于PATH环境变量时,该脚本需要在其第一行中包含执行profile文件的命令。比如,在Bash中,该脚本的第一行为:
    source ~/.bashrc
    否则,远程脚本可能报一些命令无法找到的错误。
1
0
分享到:
评论
2 楼 viscent 2013-09-28  
提示密码就说明2个主机间的信任关系没有建立成功。
1 楼 tjwangzhen 2013-09-10  
我照着这么做了,ssh userA@192.168.0.6 'hostname'还是提示输入密码?
tjwangzhen@gmail.com

相关推荐

    Linux下非交互式远程执行命令脚本.docx

    为了解决这些问题,"Linux下非交互式远程执行命令脚本"引入了一种名为jetfire的工具,它提供了一种更加灵活和自动化的方式来执行远程命令。 SSH的局限性主要体现在两方面:一是需要交互式地输入密码或建立SSH密钥对...

    Linux通过Shell脚本命令修改密码的两种方式

    1. ssh 远程到主机; 2. 切换到root账号; [一般都是切换到root进行密码修改,如果普通用户修改自己的密码,要输入原密码,然后新密码要满足复杂度才OK]; 3. passwd username 使用passwd username 修改 username 的...

    用于shell脚本无交互的ssh自动登陆(转载)

    在进行Linux系统管理或自动化任务部署时,经常需要使用SSH(Secure Shell)协议远程连接到其他服务器上执行命令或管理操作。出于安全考虑,SSH在连接远程主机时会要求输入密码,但在脚本自动化场景中,这种交互式...

    通过SSHPASS执行命令及相关脚本

    标题中的“通过SSHPASS执行命令及相关脚本”是指在Linux环境下使用`sshpass`工具进行非交互式SSH登录并执行远程命令的技术。`sshpass`是一个命令行实用程序,它允许用户在不手动输入密码的情况下,通过SSH连接执行...

    远程批量修改linux服务器密码的脚本归类.pdf

    我们使用 SSH 来连接远程 Linux 服务器,并执行相关的命令。 3. Linux 服务器密码的修改:我们使用 Expect 脚本来修改 Linux 服务器的密码。该脚本可以自动地输入密码,并执行相关的命令。 4. 用户和组的管理:在 ...

    python连接ssh 远程操作linux命令行

    Python SSH库,如Paramiko和ssh模块,是用于在Windows环境下连接到Linux服务器并执行远程命令的强大工具。本文将深入探讨如何使用Python实现这一功能,以及它可以带来的各种可能性。 首先,`Paramiko`是一个实现...

    linux下使用ssh远程执行命令批量导出数据库到本地

    总结,通过SSH远程执行命令批量导出数据库到本地,可以有效提高工作效率,尤其是在多服务器、多数据库的情况下。但要注意数据格式的兼容性和脚本的灵活性,以便适应不同的需求。在实际操作中,确保遵循最佳安全实践...

    远程调用linux命令的demo

    通常,我们可以使用SSH(Secure Shell)协议来实现这一点,例如Python中的paramiko库,或者利用expect模块进行交互式命令执行。 “工具”标签可能暗示了文章会提到一些现成的工具,如SSH客户端(如OpenSSH、PuTTY)...

    Linuxssh登录远程服务器 expect

    而 Expect 是一个自动化脚本工具,专门设计用来自动化那些交互式进程,例如SSH登录过程。Expect使得编写自动化脚本变得更加简单,特别是在需要进行重复性的、模式可预测的交互时。 标题中的"Linux ssh登录远程...

    远程shell调用.rar

    3. **通道开启**:连接成功后,需要打开一个`ChannelExec`或`ChannelShell`通道来执行命令或交互式Shell。 4. **命令执行**:在通道上执行`execCommand()`方法,传入要执行的Shell脚本或命令。 5. **数据交互**:...

    linux下使用ssh启动停止weblogicf服务.docx

    以下是一些关于如何在Linux下使用SSH启动和停止WebLogic服务的关键知识点: 1. **SSH连接**: SSH是一种加密的网络协议,用于在不安全的网络上安全地执行命令和传输数据。要连接到远程Linux服务器,你可以使用`ssh...

    通过 SSH 在远程 Linux 系统上运行命令的方法

    标题中的“通过 SSH 在远程 Linux 系统上运行命令的方法”指的是使用 Secure Shell (SSH) 协议在本地计算机上连接并控制远程 Linux 操作系统的技巧。SSH 是一种网络协议,用于安全地远程执行命令、传输文件和其他...

    shell脚本,通过snmp方式获取远程服务器的CPU内存和硬盘的使用率

    在运行这个脚本之前,确保远程服务器已启用SNMP服务,并且防火墙规则允许来自执行脚本的主机的SNMP请求。 总的来说,通过学习和实践这样的Shell脚本,你可以有效地自动化监控远程服务器的关键性能指标,从而提高IT...

    SSH 远程执行任务 - sparkdev - 博客园1

    《SSH远程执行任务详解》 ...总结,SSH作为远程操作的利器,通过灵活地使用命令参数和脚本,可以实现复杂而高效的远程自动化任务。了解并掌握这些技巧,对于提升Linux系统的管理和运维效率至关重要。

    SSH脚本文件.zip

    使用非root用户执行脚本,只给予必要的权限,并且避免硬编码敏感信息如密码在脚本中,可以使用环境变量或密钥对授权。 7. **日志记录**:在脚本中添加日志输出,如`echo`命令,可以帮助追踪脚本的执行过程,方便...

    python执行scp命令拷贝文件及文件夹到远程主机的目录方法

    Python执行SCP命令是一种在编程中实现自动化文件传输到远程服务器的常见方法,特别是在需要脚本化或批量处理任务时。SCP(Secure Copy)是基于SSH协议的安全文件传输工具,它允许用户通过加密连接将文件从本地复制到...

    SSH简介及配置使用SSH登陆远程主机讲义

    此外,SSH还可以用于自动化运维脚本,如使用`expect`脚本自动化处理交互式登录过程。 总的来说,SSH是现代网络管理中的重要工具,它的安全性和多功能性使得它成为了远程管理服务器的首选方案。通过正确配置和使用...

    java实现模拟SSH和telnet登陆(实现命令的发送和接受)

    而 Telnet 是一种较老的协议,它允许用户通过网络在远程主机上执行命令,但通常不推荐使用,因为它传输的数据是明文的,不安全。 要实现 SSH 登陆,Java 社区提供了一些库,如 JSch (Java Secure Channel)。JSch 是...

Global site tag (gtag.js) - Google Analytics