ssh在本地调用远程主机上的命令,不登录远程主机shell

需求描述

  在实际shell脚本的编写过程中,需要通过ssh远程执行一个命令,并返回执行的结果

  简单来说,就是将命令发送到远程的主机上进行执行,但是并没有实际的登录到远程主机上。即通过

  ssh的方式本地调用远程的命令。

实现方法

  通过下面脚本测试通过ssh发送命令给远程主机,并且返回执行结果:

ssh username@hostname command

 测试过程

1.通过ssh发送一个命令

[mysql@redhat6 ~]$ ssh oracle@standby df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_standby-lv_root
                       37G   20G   15G  58% /
tmpfs                 939M     0  939M   0% /dev/shm
/dev/sda1             477M   32M  420M   8% /boot
[mysql@redhat6 ~]$ 

备注:可以看到ssh通过发送命令,返回了远程主机的文件系统使用情况,但是还是在redhat6这个主机,mysql用户的shell下。

2.通过ssh发送多个命令

[mysql@redhat6 ~]$ ssh oracle@standby ls -l /tmp;date
total 32
drwxr-xr-x. 3 oracle oinstall 4096 Nov 30 15:42 CVU_11.2.0.4.0_oracle
drwxr-xr-x  3 root   root     4096 Mar  1 14:03 hadoop-root
drwxr-xr-x  4 root   root     4096 Feb 28 09:56 hbase-root
drwxr-xr-x  4 root   root     4096 Feb 28 18:36 Jetty_0_0_0_0_16010_master____.6nvknp
drwxr-xr-x  4 root   root     4096 Feb 28 10:43 Jetty_0_0_0_0_16012_master____4xio8d
drwxr-xr-x  4 root   root     4096 Feb 28 10:43 Jetty_0_0_0_0_16013_master____.osc8b6
srwxrwxrwx  1 mysql  mysql       0 Mar 12 10:03 mysql.sock
-rw-------. 1 root   root        0 Nov 29 10:11 yum.log
-rw-------. 1 root   root     1581 Jan 23 14:59 yum_save_tx-2018-01-23-14-59DFUlOW.yumtx
-rw-------. 1 root   root     4057 Jan 23 15:00 yum_save_tx-2018-01-23-15-003Cg43n.yumtx
Mon Mar 12 14:14:06 CST 2018
[mysql@redhat6 ~]$ 

备注:如果要发送多个命令,那么各个命令之间通过分号进行分隔。这个就是与在shell下一次执性多个命令一样的,用分号分隔开来。

3.以交互式的方式执性远程命令

通过在ssh命令中指定-t参数,就可以进行交互式的执行远程命令,简单来说,就是执行的命令需要远程主机的shell中的停留等待用户交互,即远程shell之间的交互,

通过使用-t参数,ssh会保持一直登录到远程主机shell,直到退出交互命令。

举例:

未使用-t参数的top命令:

[mysql@redhat6 ~]$ ssh oracle@standby top
TERM environment variable not set

使用-t参数的top命令:

[mysql@redhat6 ~]$ ssh -t oracle@standby top

执行结果

top - 14:28:30 up  4:25,  3 users,  load average: 0.00, 0.00, 0.00
Tasks:  92 total,   1 running,  91 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.1%sy,  0.0%ni, 99.5%id,  0.2%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1922424k total,   223924k used,  1698500k free,    21528k buffers
Swap:  3597144k total,        0k used,  3597144k free,    77832k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                          
    1 root      20   0 19232 1500 1220 S  0.0  0.1   0:00.71 init                                                                                                                              
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                                                                                          
    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0                                                                                                                       
    4 root      20   0     0    0    0 S  0.0  0.0   0:00.01 ksoftirqd/0                                                                                                                       
    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0                                                                                                                         
    6 root      RT   0     0    0    0 S  0.0  0.0   0:00.01 watchdog/0                                                                                                                        
    7 root      20   0     0    0    0 S  0.0  0.0   0:02.94 events/0                                                                                                                          
    8 root      20   0     0    0    0 S  0.0  0.0   0:00.00 cgroup                                                                                                                            
    9 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khelper                                                                                                                           
   10 root      20   0     0    0    0 S  0.0  0.0   0:00.00 netns                                                                                                                             
   11 root      20   0     0    0    0 S  0.0  0.0   0:00.00 async/mgr                                                                                                                         
   12 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pm                                                                                                                                
   13 root      20   0     0    0    0 S  0.0  0.0   0:00.03 sync_supers                                                                                                                       
   14 root      20   0     0    0    0 S  0.0  0.0   0:00.04 bdi-default                                                                                                                       
   15 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kintegrityd/0                                                                                                                     
   16 root      20   0     0    0    0 S  0.0  0.0   0:00.14 kblockd/0                                                                                                                         
   17 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kacpid                                                                                                                            
   18 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kacpi_notify                                                                                                                      
   19 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kacpi_hotplug                                                                                                                     
   20 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ata_aux                                                                                                                           
   21 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ata_sff/0                                                                                                                         
   22 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ksuspend_usbd                                                                                                                     
   23 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khubd                                                                                                                             
   24 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kseriod                                                                                                                           
   25 root      20   0     0    0    0 S  0.0  0.0   0:00.00 md/0                                                                                                                              
   26 root      20   0     0    0    0 S  0.0  0.0   0:00.00 md_misc/0                                                                                                                         
   27 root      20   0     0    0    0 S  0.0  0.0   0:00.00 linkwatch                                                                                                                         
   29 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khungtaskd                                                                                                                        
   30 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kswapd0                                                                                                                           
   31 root      25   5     0    0    0 S  0.0  0.0   0:00.00 ksmd                                                                                                                              
   32 root      39  19     0    0    0 S  0.0  0.0   0:00.04 khugepaged                                                                                                                        
   33 root      20   0     0    0    0 S  0.0  0.0   0:00.00 aio/0                                                                                                                             
Connection to standby closed.   #当通过Ctrl + C退出交互式命令时,就会断了与远程主机的连接。

备注:通过以上的测试,使用-t选项,就是在发出命令之后,ssh还会保留在远程的shell上,等待命令执行完成或者说等待用户给出后续的命令,当用户发送

  退出交互命令之后,与远程的shell断开,回到本地的shell中

 

文档创建时间:2018年3月12日14:31:47

posted @ 2018-03-12 14:35  Zhai_David  阅读(2743)  评论(0编辑  收藏  举报