SSH 服务详解 (四)-- 本地调用远程主机的命令

SSH 服务详解 (四)-- 本地调用远程主机的命令

SSH服务详解(一)–Linux SSH 服务器与客户端的安装与启动

SSH服务详解(二)–使用私钥登录 SSH 服务器(免密登录)

SSH 服务详解 (三)-- 使用 SSH 代理

SSH 服务详解 (四)-- 本地调用远程主机的命令

SSH 服务详解 (五)-- 远程文件拷贝

SSH 服务详解 (六)-- Windows SSH 主机

SSH 服务详解 (七)-- SSH 连接 Github

SSH服务详解(八)– vscode 通过 SSH 远程连接 linux 服务器

  • SSH 服务器运行在 ubuntu 18.04.1
  • SSH 客户端在 Windows10

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

应用场景:

  • 在实际 shell 脚本的编写过程中,需要通过 ssh 远程执行一个命令,比如新建一个目录等

实现方法:

ssh username@hostname command

SSH 发送一个命令

通过 Windows 的 powershell 发送如下命令

ssh tyustli@192.168.10.22 "ls"

命令的返回结果

cross-tool
Desktop
src
temp
test.c

新建一个目录

ssh tyustli@192.168.10.22 "mkdir tyustli;ls"

命令的返回结果

cross-tool
Desktop
src
temp
test.c
tyustli

可以看到 ssh 通过发送命令,返回了远程主机的目录情况,但是还是在 windows 这个主机的 powershell 下

SSH 发送多个命令

ssh tyustli@192.168.10.22 "ls;pwd"

如果要发送多个命令,那么各个命令之间通过分号进行分隔

SSH 以交互的方式执行远程命令

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

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

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

tyustli@172.16.19.129 top
TERM environment variable not set.

使用 - t 参数的 top 命令

ssh -t tyustli@172.16.19.129 top

执行结果:

top - 00:43:30 up 2 days,  2:45,  2 users,  load average: 0.00, 0.02, 0.00
Tasks: 379 total,   1 running, 294 sleeping,   0 stopped,   1 zombie
%Cpu(s):  0.1 us,  0.3 sy,  3.2 ni, 96.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  4002276 total,   815300 free,  1508844 used,  1678132 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  2193032 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 67259 tyustli   20   0   51468   4236   3404 R   6.2  0.1   0:00.01 top
     1 root      20   0  226204   9788   6700 S   0.0  0.2   0:11.33 systemd
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.10 kthreadd
     3 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 rcu_gp
     4 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 rcu_par_gp
     6 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 kworker/0:0H-kb
     9 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 mm_percpu_wq
    10 root      20   0       0      0      0 S   0.0  0.0   0:00.22 ksoftirqd/0
    11 root      20   0       0      0      0 I   0.0  0.0   1:51.00 rcu_sched
    12 root      rt   0       0      0      0 S   0.0  0.0   0:00.58 migration/0
    13 root     -51   0       0      0      0 S   0.0  0.0   0:00.00 idle_inject/0
    14 root      20   0       0      0      0 S   0.0  0.0   0:00.00 cpuhp/0
    15 root      20   0       0      0      0 S   0.0  0.0   0:00.00 cpuhp/1
    16 root     -51   0       0      0      0 S   0.0  0.0   0:00.00 idle_inject/1
    17 root      rt   0       0      0      0 S   0.0  0.0   0:01.03 migration/1
    18 root      20   0       0      0      0 S   0.0  0.0   0:00.32 ksoftirqd/1
    20 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 kworker/1:0H-kb
    21 root      20   0       0      0      0 S   0.0  0.0   0:00.00 cpuhp/2
    22 root     -51   0       0      0      0 S   0.0  0.0   0:00.00 idle_inject/2
    23 root      rt   0       0      0      0 S   0.0  0.0   0:01.05 migration/2
    24 root      20   0       0      0      0 S   0.0  0.0   0:00.18 ksoftirqd/2
    26 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 kworker/2:0H-kb
    27 root      20   0       0      0      0 S   0.0  0.0   0:00.00 cpuhp/3
    28 root     -51   0       0      0      0 S   0.0  0.0   0:00.00 idle_inject/3
    29 root      rt   0       0      0      0 S   0.0  0.0   0:01.02 migration/3
    30 root      20   0       0      0      0 S   0.0  0.0   0:00.98 ksoftirqd/3
    32 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 kworker/3:0H-kb
    33 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kdevtmpfs
    34 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 netns
    35 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_tasks_kthre
    36 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kauditd
    40 root      20   0       0      0      0 S   0.0  0.0   0:00.14 khungtaskd
    41 root      20   0       0      0      0 S   0.0  0.0   0:00.00 oom_reaper
    42 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 writeback
    43 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kcompactd0
    44 root      25   5       0      0      0 S   0.0  0.0   0:00.00 ksmd
    45 root      39  19       0      0      0 S   0.0  0.0   0:00.00 khugepaged
   137 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 kintegrityd
   138 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 kblockd
   139 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 blkcg_punt_bio
   140 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 tpm_dev_wq
   141 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 ata_sff
   142 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 md

通过 Ctrl + C 出交互式命令时,就会断了与远程主机的连接

通过以上的测试,使用 - t 选项,就是在发出命令之后,ssh 还会保留在远程的 shell 上,等待命令执行完成或者说等待用户给出后续的命令,当用户发送 Ctrl + C 退出交互命令之后,与远程的 shell 断开,回到本地的 shell 中

参考连接:https://www.cnblogs.com/chuanzhang053/p/8549122.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值