`

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通过Shell脚本命令修改密码的两种方式

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

    Shell脚本实现自动输入密码登录服务器

    主要介绍了Shell脚本实现自动输入密码登录服务器,本文使用expect来实现这个需求,讲解了expect的安装及使用脚本,需要的朋友可以参考下

    Linux管理员指南

    令which 83 6.4.15 查找命令的保存位置命令whereis 83 6.4.16 释放磁盘空间命令df 84 6.4.17 同步磁盘命令sync 84 6.5 进程管理 84 6.5.1 列出进程清单命令ps 84 6.5.2 交互列出进程清单命令top ...

    wurmterm:具有服务自动发现和呈现功能Linux终端

    详细运作方式SSH别名捕获交互式简单连接(ala“ ssh ”) Alias命令将本地端口添加到远程套接字转发ssh -L 127.0.0.1:2046:/tmp/wt.socket <host>Alias命令以嵌入式bash启动远程命令侦听器ssh -t <host> "();...

    Ubuntu权威指南(2/2)

    1.3.3 使用info命令查询命令的相关信息 8 1.4 安装Ubuntu Linux系统 9 1.4.1 安装前的准备 10 1.4.2 安装Ubuntu Linux系统 11 1.4.3 安装后的软件维护与更新 16 第2章 GNOME桌面环境 18 2.1 GNOME桌面环境概述 19 ...

    Ubuntu权威指南(1/2)

    1.3.3 使用info命令查询命令的相关信息 8 1.4 安装Ubuntu Linux系统 9 1.4.1 安装前的准备 10 1.4.2 安装Ubuntu Linux系统 11 1.4.3 安装后的软件维护与更新 16 第2章 GNOME桌面环境 18 2.1 GNOME桌面环境概述 19 ...

    linux.chm文档

    locate \*.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令 whereis halt 显示一个二进制文件、源码或man的位置 which halt 显示一个二进制文件或可执行文件的完整路径 挂载一个文件系统 mount /dev/...

    老男孩python 四期

    5、编写用户交互脚本 6、读取用户输入 7、基本流程控制,if..else/for x in…/while True 8、程序流程控制二,break\continue\ 嵌套循环 9、项目实践:编写用户登录认证程序 ※实现用户名密码登陆,输入错误3次后...

    remocon:快速轻松地控制本地git工作树的远程副本

    遥控通过在几乎没有时间/精力的情况下来回发送更改,即使在需要在远程主机上运行内容的情况下,也可以将您喜欢的编辑器/ IDE与本地git工作树一起使用。概要在航站楼从本地交互式外壳程序,在git工作树的任何子目录中...

    Xshell6与Xftp6的免费安装包.zip(持续更新)

    XShell6功能强悍,具备标签式的环境,动态端口转发,自定义键的映射关系,用户定义的按钮,VB脚本,显示2字节字符和国际语言支持UNICODE,支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过...

    Python Cookbook

    15.10 使用SSH执行远程登录 554 15.11 通过HTTPS验证一个SSL客户端 557 第16章 关于程序的程序 559 引言 559 16.1 验证字符串是否代表着一个合法的数字 564 16.2 导入一个动态生成的模块 565 16.3 导入一个...

    JAVA上百实例源码以及开源项目

    使用时候只需在控制台窗口执行jar就可以了。 Java 3DMenu 界面源码 5个目标文件 内容索引:Java源码,窗体界面,3DMenu  Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,...

    JAVA上百实例源码以及开源项目源代码

    使用时候只需在控制台窗口执行jar就可以了。 Java 3DMenu 界面源码 5个目标文件 内容索引:Java源码,窗体界面,3DMenu Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不...

    java开源包8

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包1

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包11

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包2

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包3

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包6

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

Global site tag (gtag.js) - Google Analytics