ssh執行命令

  1. 執行一條命令
    • ssh user@ip command
  2. 執行多條命令
    • ssh user@ip "command1;command2"    #分號隔開
  3. 關於轉義
    • ssh user@ip 'echo $HOME'      #單引號,本機不轉義,到目標機器執行
      ssh user@ip "echo $HOME"      #雙引號,先在本機轉義,到目標ip執行
    •  [root@ricky01 ~]# ssh ricky02@192.168.56.101 'echo $HOME' #單引號,先不轉義,到目標機器執行echo $HOME
        ricky02@192.168.56.101's password:
        /home/ricky02ssh

        [root@ricky01 ~]# ssh ricky02@192.168.56.101 "echo $HOME" #雙引號,先把$HOME轉成/root,到目標機器執行echo /root
        ricky02@192.168.56.101's password:
        /rootspa

  4. 關於awk
    • ip a|grep 192.168*|awk '{ print $2 }'
      192.168.56.102/24      #本機能夠正確執行
    • [root@ricky01 ~]# ssh 192.168.56.101 ip a|grep 192.168*|awk '{ print $2 }'   #單條命令,不加引號,能夠執行
      root@192.168.56.101's password: 
      192.168.56.101/24
    • [root@ricky01 ~]# ssh 192.168.56.101 'ip a|grep 192.168*|awk '{ print $2 }''  #加單引號,報錯
      root@192.168.56.101's password: 
      awk: cmd. line:1: {
      awk: cmd. line:1:  ^ unexpected newline or end of string
    • [root@ricky01 ~]# ssh 192.168.56.101 "ip a|grep 192.168*|awk '{ print $2 }'"  #加雙引號,沒有執行awk
      root@192.168.56.101's password: 
          inet 192.168.56.101/24 brd 192.168.56.255 scope global dynamic enp0s8
    • [root@ricky01 ~]# ssh 192.168.56.101 "ip a|grep 192.168*|awk '{ print \$2 }'"  #雙引號,$前加轉義符號\,正確執行
      root@192.168.56.101's password: 
      192.168.56.101/24
    • [root@ricky01 ~]# ssh 192.168.56.101 'ip a|grep 192.168*|awk '{ print \$2 }''  #單引號,$前加轉義符號\,報錯
      root@192.168.56.101's password:  awk: cmd. line:1: { awk: cmd. line:1: ^ unexpected newline or end of string
相關文章
相關標籤/搜索