首页 > 运维 > linux运维 > Linux Shell怎么用ssh命令统计分布式集群信息

Linux Shell怎么用ssh命令统计分布式集群信息

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2023-05-11 15:52:06
转载
1015 人浏览过

一、统计分布式集群信息的思路

用免密的远程登陆命令,实现一台机器访问其他集群的机器。因此想要实现有几个重要步骤:

  • 学会shh的使用方法

  • 实现免密登录

  • 编写shell程序

二、SSH加密原理

非对称加密技术是一种加密和解密用的不同密钥的加密方法。其中RSA和DSA就是非对称加密方法。当然非对称加密算法有一个前提,就是有一对密钥可以相互加密和解密,通常这一对密钥就会成为持有者的公钥和私钥。公钥是其他人可以知悉的密钥,而私钥只能持有者自己知道。当然如果私钥泄露给外人,可能会有信息安全问题。

假如:A要发送给B一个加密数据。第一种方法是:A用自己的私钥加密,B获得数据后用A的公钥解密。第二种方法是:A用B的公钥加密数据,B获得数据后再用自己的私钥解密。

SSH远程登录用的是第一种方法。

三、SSH命令

常用的方法是

 ssh -i [私钥文件名] -p  [端口号] user@hostname  [执行的命令]

其中私钥文件名默认为 $HOME/.ssh/id_rsa    或者 $HOME/.ssh/id_dsa ,端口号默认为22.  

例如:

1

ssh   myname@128.180.146.89  #输入目标主机的密码后进行远程操作,exit命令退出

登录后复制

四、利用ssh-keygen和ssh-copy-id 实现免密登录

1

ssh-keygen     #直接全部回车,先都默认

登录后复制

然后会在$HOME/.ssh/ 目录下生成一个密钥对文件,其中 *.pub统一为公钥文件,另外一个就是私钥文件。

接下来把公钥文件中的内容拷贝到目标主机用户的 $HOME/.ssh/authorized_keys 中。拷贝方式可以自己手动操作。也可用如下命令实现

ssh-copy-id -i [公钥文件名] user$hostname

例如 :

1

ssh-copy-id -i  $HOME/.ssh/id_rsa.pub  myname@128.180.146.89

登录后复制

然后再执行远程登录命令就可以实现免密登录啦。如果第二次登录还需要密码,可能是因为文件和文件目录权限问题。也可能是因为连接的私钥与公钥不是一对。

五、Linux Shell 脚本实现

sshtest.sh文件:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

#!/bin/bash

func___setenv(){

   RTS_ECT_DIR="$HOME"

   #.....

}

######################################

#

#   程序主体

######################################

  

#调用环境变量

func___setenv

  

#读取机器连接信息

while read line

do

ssh_cmd=

ssh_linkhost=`echo ${line}`

    while  read  cmdline

    do

    #空命令行跳过

    if [ -z "$cmdline" ]; then

        continue

    fi

     

    #读取的命令行拼接;

    if [ ! -n "$ssh_cmd" ]; then

        ssh_cmd=`echo ${$cmdline}` ;

    else

        ssh_cmd="${ssh_cmd};"`echo ${$cmdline}` ;

    fi

    done <${RTS_ECT_DIR}/sshcmd.cfg

#执行远程命令

ssh $ssh_linkhost $ssh_cmd </dev/null

done <${RTS_ECT_DIR}/sshlink.cfg

登录后复制

sshlink.cfg 文件:前提要先配好密钥才可以免密登录

1

2

3

myname@128.180.146.89

myName@128.180.146.90

Myname@128.180.146.91

登录后复制

sshcmd.cfg 文件:根据自己需要填写

1

2

ps -ef|grep java

df -h

登录后复制

六、ssh只循环一次问题

如果上述代码的倒数第二行如果改成

1

ssh $ssh_linkhost $ssh_cmd

登录后复制

那么while循环就只循环1次。因为while read line 会把循环信息放到标准输入中,而ssh命令会把输入缓存全部读光,因此while不在循环。所以ssh命令需要重定向

以上是Linux Shell怎么用ssh命令统计分布式集群信息的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
centos7 - git的linux版本没有centos的?
来自于 1970-01-01 08:00:00
0
0
0
学习Linux的先行知识
来自于 1970-01-01 08:00:00
0
0
0
Linux下连接数据库
来自于 1970-01-01 08:00:00
0
0
0
Linux 批量修改文件名
来自于 1970-01-01 08:00:00
0
0
0
Linux中如何查看服务器的日志
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板