zoukankan      html  css  js  c++  java
  • ssh远程执行命令

    1.远程执行普通命令

    ssh username@ip "cmd1;cmd2"  多条命令间用分号分割

     ssh -l username 192.168.1.1等同于  ssh  username@192.168.1.1

    2.远程执行需要交互的命令

    例如top命令,直接执行ssh username@ip "top"会报TERM environment variable not set.的错误

    解决方式是使用参数 -t,使用参数 -t可以显式的告诉 ssh,我们需要一个 TTY 远程 shell 进行交互。添加 -t 参数后,ssh 会保持登录状态,直到你退出需要交互的命令。

    cmd中的几种特殊情况:

    • 执行多行数据:用单引号或双引号开头,然后写上几行命令,最后再用相同的引号来结束
    • 执行的命令中有单/双引号:混合使用单双引号
    • 执行命令中有变量
      • name=aa
      • ssh username@ip -p${port} "echo $name"  #输出aa
      • ssh username@ip -p${port} 'echo $name'    #输出空,不能使用这种方式
      • ssh username@ip -p${port} bash -c "'echo $name'"  #输出aa

    3.在远程机器中执行本地脚本

    在本地创建一个脚本test1.sh,假设内容为ls pwd

    执行ssh username@ip < test1.sh即可,通过重定向 stdin,本地的脚本 test.sh 在远程服务器上被执行。

    如果本地脚本中需要传参,执行ssh username@ip -p${port} 'bash -s' < test1.sh hello world即可

     test1.sh的内容为

    • echo 'all paras are '$*
    • echo 'first para is '$0
    • echo 'second para is '$1

    执行ssh username@ip -p${port} 'bash -s' < test1.sh hello world后的输出为:

    • all paras are hello world
    • first para is bash
    • second para is hello

    设置本地机器免密登录远程机器的方法:ssh username@ip 'mkdir -p .ssh&&cat >>.ssh/authorized_keys' < ~/.ssh/id_rsa.pu

    4.执行远程机器中的脚本

    远程机器中有一个脚本/home/user/a.sh,需要在本地操作远程机器执行脚本a.sh,需要执行ssh username@ip -p${port} "/home/roaddb/a.sh"

    注意指定脚本为全路径

    如果要传参,则直接在脚本后加上参数即可,即ssh username@ip -p${port} "/home/roaddb/a.sh  hello world"

    aa.sh的内容为

    • echo 'all paras are '$*
    • echo 'first para is '$0
    • echo 'second para is '$1

    输出为:

    • all paras are hello world
    • first para is /home/roaddb/a.sh
    • second para is hello
  • 相关阅读:
    Pikachu漏洞练习平台实验——SQL注入(四)
    ELMO,BERT和GPT简介
    Self-Attention 和 Transformer
    Seq2Seq和Attention机制入门介绍
    循环神经网络(RNN)入门介绍
    XGBoost的推导和说明
    在Azure DevOps Server中运行基于Spring Boot和Consul的微服务项目单元测试
    Azure DevOps Server(TFS) 客户端分析
    传统码头建设企业:Azure DevOps Server 流水线技术沟通
    ItelliJ Idea 2019提交TFVC变更,系统提示Validation must be performed before checking in
  • 原文地址:https://www.cnblogs.com/mianbaoshu/p/12071937.html
Copyright © 2011-2022 走看看