Linux ssh的的用法
Linux ssh的的用法
ssh执行远程命令
1. 执行命令
1.执行单条命令
ubuntu@node1:~$ ssh ubuntu@172.16.10.102 hostname
ubuntu@172.16.10.102's password:
node2
2.执行带参数的命令
ssh ubuntu@172.16.10.102 grep root /etc/passwd
ubuntu@172.16.10.102's password:
root:x:0:0:root:/root:/bin/bash
3.执行多条命令
执行多条命令时,只要用分号把命令分割开就可以了,但是要把多条命令用引号引起来,否则分号后面的命令就是在本地执行的。
# 不加分号
ubuntu@node1:~$ ssh ubuntu@172.16.10.102 cat /etc/hostname;hostname -I
node2
172.16.10.101
# 加分号
ubuntu@node1:~$ ssh ubuntu@172.16.10.102 "cat /etc/hostname;hostname -I"
node2
172.16.10.102
4.执行多行命令
用单引号或双引号开头,然后写上几行命令,最后再用相同的引号来结束。
ubuntu@node1:~$ ssh ubuntu@172.16.10.102 "
> hostname -I
> uname -r
> uptime
> "
ubuntu@172.16.10.102's password:
172.16.10.102
4.4.0-31-generic
15:39:13 up 6:28, 2 users, load average: 0.00, 0.00, 0.00
5.执行交互命令
ubuntu@node1:~$ ssh ubuntu@172.16.10.102 "sudo apt install nginx"
ubuntu@172.16.10.102's password:
sudo: no tty present and no askpass program specified
默认情况下,当你执行不带命令的 ssh 连接时,会为你分配一个 TTY。因为此时你应该是想要运行一个 shell 会话。
但是当你通过 ssh 在远程主机上执行命令时,并不会为这个远程会话分配 TTY。此时 ssh 会立即退出远程主机,所以需要交互的命令也随之结束。
这时需要用 -t 参数显式的告诉 ssh,我们需要一个 TTY 远程 shell 进行交互,添加 -t 参数后,ssh 会保持登录状态,直到你退出需要交互的命令。
ubuntu@node1:~$ ssh -t ubuntu@172.16.10.102 "sudo apt install nginx"
ubuntu@172.16.10.102's password:
[sudo] password for ubuntu:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
fontconfig-config fonts-dejavu-core libfontconfig1 libgd3 libjbig0
libjpeg-turbo8 libjpeg8 libtiff5 libvpx1 libxpm4 libxslt1.1 nginx-common
nginx-core
Suggested packages:
libgd-tools fcgiwrap nginx-doc
The following NEW packages will be installed:
fontconfig-config fonts-dejavu-core libfontconfig1 libgd3 libjbig0
libjpeg-turbo8 libjpeg8 libtiff5 libvpx1 libxpm4 libxslt1.1 nginx
nginx-common nginx-core
0 upgraded, 14 newly installed, 0 to remove and 8 not upgraded.
Need to get 2,681 kB of archives.
After this operation, 9,073 kB of additional disk space will be used.
Do you want to continue? [Y/n] n
Abort.
Connection to 172.16.10.102 closed.
6.使用本地变量
ubuntu@node1:~$ name="nginx"
ubuntu@node1:~$ ssh ubuntu@172.16.10.102 "echo "Install $name""
ubuntu@172.16.10.102's password:
Install nginx
2. ssh执行脚本
1.执行远程不带参数的脚本
#远程脚本文件内容
ubuntu@node2:~$ cat hello.sh
#!/bin/bash
echo "hello world"
ubuntu@node1:~$ ssh ubuntu@172.16.10.102 "$HOME/hello.sh"
ubuntu@172.16.10.102's password:
hello world
2.执行远程需要参数的脚本
# 远程脚本文件内容
ubuntu@node2:~$ cat script.sh
#!/bin/bash
name=$1
echo "install $name"
echo "installed succeed!"
ubuntu@node1:~$ name=nginx
ubuntu@node1:~$ ssh ubuntu@172.16.10.102 "$HOME/script.sh $name"
ubuntu@172.16.10.102's password:
install nginx
installed succeed!
3.执行本地不带参数的脚本
ubuntu@node1:~$ cat hello.sh
#!/bin/bash
hostname
touch hello.txt
ls
ubuntu@node1:~$ ssh ubuntu@172.16.10.102 < hello.sh
Pseudo-terminal will not be allocated because stdin is not a terminal.
ubuntu@172.16.10.102's password:
node2
hello.txt
4.执行本地需要参数的脚本文件
# 脚本内容,需要传入一个参数
ubuntu@node1:~$ cat script.sh
#!/bin/bash
name=$1
echo "install $name"
echo "installed succeed!"
# 需要加上bash -s
ubuntu@node1:~$ ssh ubuntu@172.16.10.102 "bash -s" < script.sh nginx
ubuntu@172.16.10.102's password:
install nginx
installed succeed!
Linux ssh的的用法的更多相关文章
- linux ssh使用深度解析(key登录详解)
linux ssh使用深度解析(key登录详解) SSH全称Secure SHell,顾名思义就是非常安全的shell的意思,SSH协议是IETF(Internet Engineering Task ...
- (转)Linux SSH批量分发管理
Linux SSH批量分发管理 原文:http://blog.51cto.com/chenfage/1831166 第1章 SSH服务基础介绍 1.1 SSH服务 1.1.1SSH介绍 SSH是Sec ...
- Linux中find常见用法
Linux中find常见用法示例 ·find path -option [ -print ] [ -exec -ok command ] {} \; find命令的参数 ...
- 如何通过linux ssh远程linux不用输入密码登入
如何通过一台linux ssh远程其他linux服务器时,不要输入密码,可以自动登入.提高远程效率,不用记忆各台服务器的密码. 工具/原料 ssh,ssh-keygen,scp 方法/步骤 首 ...
- windows 和 linux ssh互连
从windows连接到linux: linux开启sshd服务即可,主要是windows的配置如下: 1.使用软件,putty可以直接使用 2.使用cmd控制台连接linux,安装SSH Secure ...
- Linux SSH安全策略限制IP登录方法(转)
本文介绍了Linux SSH安全策略限制IP登录的两种方法.具体如下: 方法一: 首先需要限制登录的ip(或者如果需要自己本地登录,查看最后登录ip即可) Vim /etc/hosts.allow 输 ...
- Linux关于watch的用法
Linux关于watch的用法 2011-07-20 0个评论 收藏 我要投稿 watch 是一个非常实用的命令,基本所有的 Linux 发行版都带有这个小工具,如同名字一 ...
- [转]Linux中find常见用法示例
Linux中find常见用法示例[转]·find path -option [ -print ] [ -exec -ok command ] {} \;find命令的参 ...
- Linux SSh scp使用【远程文件/目录的传输】
一:Linux ssh scp的简介及作用: scp就是secure copy的简写,用于在linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器. 有时我们 ...
随机推荐
- selenium下拉一个框内的滚动条
js='document.getElementsByClassName("route-tree")[0].scrollTop=10000'
- [POI2008]Sta(树形dp)
[POI2008]Sta Description 给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大 Input 给出一个数字N,代表有N个点.N<=1000000 下面 ...
- Kettle日志级别
Kettle的日志级别LogLevel分为以下几个: Nothing 没有日志 不显示任何输出 Error 错误日志 仅仅显示错误信息 Minimal 最小日志 使用最小的日志 Basic 基本日志 ...
- 每次当浏览到网页,点击tab标签又回到顶部去了!
通常tab的标签使用a链接,而a链接的href值为#,这是一个锚点的属性,因此他会跳转到网页的顶端.如果你的tab包含一个id=tab,也可以设置为href="#tab"这样他就会 ...
- Python3及Pycharm安装
1.首先去python官网下载相应版本的Python安装包.如下: 2.下载完成后解压,双击exe文件进行安装,看到如下界面:Install Now表示默认安装:Customize installat ...
- Check the port occupy on Mac OSX
Check the port occupy on Mac OSX lsof -i :7070 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME si ...
- Java泛型与集合笔记
第一章 Java的泛型为了兼容性和防止代码爆炸,在编译成字节碼时会进行类型擦除,编译器自动添加代码做类型转换(用到List<Integer>的地方用Integer来做转换),自动做装箱拆箱 ...
- spring boot 简介(基于SSM框架的一个升级版本吧)
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过 ...
- 攻防世界 | hello_pwn
看样子是要让我们通过read(0, &unk_601068, 0x10uLL),读入 unk_601068 将 dword_60106C 覆盖 6c-68=4,所以: from pwn imp ...
- 基于MyBatis实现Dao理论
基于MyBatis实现Dao理论 推荐使用xml提供sql 实现接口推荐使用Mapper自动实现DAO接口,让我们更关注sql书写本身