SSH 服务详解 (四)-- 本地调用远程主机的命令
SSH服务详解(一)–Linux SSH 服务器与客户端的安装与启动
SSH服务详解(二)–使用私钥登录 SSH 服务器(免密登录)
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