shell脚本-linux如何在脚本中远程到一台linux机器并执行命令

需求:我们需要从11.0.1.17远程到11.0.1.16上执行命令

实现:

1.让11.0.1.17 可以免密登录到11.0.1.16

[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:bu287XmVZ6enpUciggpz71Q7e5kfKYqVMTcM5bDD8eU root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|          o . .  |
|         . B o   |
|          = o E  |
|           +     |
|        S.+ +   .|
|    o ...o.*...o*|
|     + o+ *..+o*+|
|      .o.= =+oo+o|
|       .o *++o++ |
+----[SHA256]-----+

[root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub root@11.0.1.16
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub"
The authenticity of host '11.0.1.16 (11.0.1.16)' can't be established.
ECDSA key fingerprint is SHA256:Zedce2a7sFWF3pYJaVtedqST+SsG1zbPZ7Y4rGiEpB0.
ECDSA key fingerprint is MD5:57:75:f6:6f:68:ba:b2:b8:38:0f:55:96:c9:19:d6:29.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@11.0.1.16's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@11.0.1.16'"
and check to make sure that only the key(s) you wanted were added.


2.在脚本中实现我们想要的功能

[root@localhost ~]# cat test.sh 
#!/bin/bash
ssh root@11.0.1.16 <<remotessh
mkdir test
ls -la test
ifconfig
exit
remotessh


[root@localhost ~]# sh test.sh 
Pseudo-terminal will not be allocated because stdin is not a terminal.
总用量 4
drwxr-xr-x  2 root root    6 7月  15 09:38 .
dr-xr-x---. 8 root root 4096 7月  15 09:38 ..
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 11.0.1.16  netmask 255.255.255.0  broadcast 11.0.1.255
        inet6 fe80::20c:29ff:fe00:9681  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:00:96:81  txqueuelen 1000  (Ethernet)
        RX packets 95760  bytes 67679836 (64.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 45061  bytes 3990000 (3.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 24  bytes 2547 (2.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 24  bytes 2547 (2.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

相关推荐

  1. 如何Python执行Shell脚本

    2024-07-16 23:12:01       50 阅读
  2. Linux shell脚本切换为root用户执行命令

    2024-07-16 23:12:01       31 阅读
  3. linux centos 定时任务,执行shell脚本

    2024-07-16 23:12:01       37 阅读
  4. Linux】编写一个 shell 脚本&执行

    2024-07-16 23:12:01       27 阅读
  5. Linux写个脚本执行系列命令

    2024-07-16 23:12:01       27 阅读
  6. 如何Linux shell脚本提示Yes/No/Cancel输入

    2024-07-16 23:12:01       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 23:12:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 23:12:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 23:12:01       58 阅读
  4. Python语言-面向对象

    2024-07-16 23:12:01       69 阅读

热门阅读

  1. C# 匿名方法、Lambda、Linq概念及联系

    2024-07-16 23:12:01       23 阅读
  2. Mysql迁移达梦数据库-简介篇

    2024-07-16 23:12:01       18 阅读
  3. ASF平台

    ASF平台

    2024-07-16 23:12:01      20 阅读
  4. 构造器/构造方法

    2024-07-16 23:12:01       19 阅读
  5. 数据模型-NoSQL数据模型深入理解

    2024-07-16 23:12:01       20 阅读
  6. TCP网络模型

    2024-07-16 23:12:01       20 阅读