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



Linux下使用SSH非交互式远程执行命令脚本
 
 非交互式在远程主机上执行命令或者脚本可以帮助我们快速完成一些任务。比如,在集群
环境中,同时在各个结点上的日志文件中查询特定的关键字。  www.2cto.com  
 
     通过SSH命令远程执行命令首先需要建立相关主机间的信任关系。否则,在执行命令前SSH
命令会提示你输入远程主机的密码,这就产生了系统与人的交互,不利于脚本的自动化。建立
主机间信任关系的方法如下:
 
假设我们有两台主机。主机名分别为linuxa和linuxb。首先在linuxa上以当前用户运行如下命令生成
本主机的公钥和私钥文件:
ssh-keygen -t rsa
     上述命令执行后,隐藏目录~/.ssh下会出现两个文件:idrsa和idrsa.pub。其中,idrsa.pub为
公钥文件。将该文件的内容追加到对端主机linuxb上~/.ssh目录下的authorizedkeys文件中。若该
文件不存在,可自行创建之。下面是一个id_rsa.pub文件示例的文件内容:  www.2cto.com  
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtbW/vKjrIkTfFjSJP9FyVb3kQStc31oBuiKVaCZzoejxSM2+
ck6CB09l4BoFujpI0+omL4Nptxk
 
EAgkCGnMco2yXrVSOqhqyaQV2BnDPkyMoEq2MGB9hSc9xQKa+Q== viscent@viscent
 
     接下来,就可以在不输入密码的情况下在远程主机私执行命令了。命令格式如下:
     ssh 远程用户名@远程主机IP地址 ‘远程命令或者脚本’
 
     比如,
    ssh userA@192.168.0.6 'hostname'
    上述命令执行后,终端输出的是对端主机的主机名,而不是你当前登录的主机的主机名。说明
hostname这个命令其实是在对端主机上运行的。
    若要远程执行脚本,只需要将上面的命令的第三个参数改为要执行的远程脚本的文件名全称即可。
比如:  www.2cto.com  
    ssh userA@192.168.0.6 '/home/userA/script/test.sh'
    需要特别注意的是:当远程脚本中使用了一些命令,而这些命令被Shell解析器的识别依赖于
PATH环境变量时,该脚本需要在其第一行中包含执行profile文件的命令。比如,在Bash中,
该脚本的第一行为:
    source ~/.bashrc
    否则,远程脚本可能报一些命令无法找到的错误。
 
来源  http://blog.viscenthuang.info/
 

相关内容

    暂无相关文章