1. 程式人生 > >ssh 遠端執行遠端機上的指令碼或命令

ssh 遠端執行遠端機上的指令碼或命令

單命令執行: ssh [email protected] "cd /home ; ls"

今天 遠端執行命令發現了一個問題:

當執行下面命令

ssh -o ConnectTimeout=60 -qn [email protected] "cd /tc1/fs_users/;pwd; echo '12'|OneScriptToRunl.sh -s" > test.log

發現錯誤: ksh: OneScriptToRunl.sh: not found [No such file or directory]

改成命令就可以執行:

ssh -q [email protected]

$Machine ". ./.profile>/dev/null; echo '12' | sh $GF_HOME/OneScriptToRun.sh -s" > $LOG/QUERY_"$Name"_$NOW.log 2>&1 &

原因: #!/bin/ksh
. ~/.profile >/dev/null      是bash開始標準格式

               1.) 點號 " . "  是shell的內部命令,其功能相當於另一個shell內部命令 "source" 。
                   它們的作用是:在當前的shell環境中解釋執行shell指令碼,而不會建立子shell程序。
                    有什麼好處:這樣做使得將要執行的shell指令碼,可以訪問當前shell環境中的所有已定義的變數,
                             以及shell指令碼中設定的變數也會儲存下來。

              2.)波浪號 " ~ " 是指代當前登入的使用者的主目錄,即 /home/使用者名稱/  ,所以 " ~/.profile " 就是指向使用者主目錄下的.profile檔案。
       .profile 檔案是一個shell指令碼檔案,每當使用者登入時就會自動被呼叫,而現在是由我們主動去呼叫它,通過點號 " . " 來呼叫。
               3.) 右尖括號 " > "  是輸出重定向符,表示將符號左邊的命令執行結果輸出到右邊指定的檔案中(只重定標準輸出)。
               4.)/dev/null 就像是一個回收站,任何寫入該檔案的內容都會被清除。
              綜合一下就是:執行當前登入使用者主目錄下的.profile指令碼檔案,遮蔽執行指令碼過程中輸出的資訊,不包括錯誤資訊。

多命令執行:

ssh [email protected] > /dev/null 2>&1 << eeooff
        cd /directory
        #touch abcdefg.txt
        echo '12' | command.sh -s > test123456.out
        exit
        eeooff
        echo done!

 遠端執行的內容在“<< eeooff ” 至“ eeooff ”之間,在遠端機器上的操作就位於其中,注意的點:

  1. << eeooff,ssh後直到遇到eeooff這樣的內容結束,eeooff可以隨便修改成其他形式。
  2. 重定向目的在於不顯示遠端的輸出了
  3. 在結束前,加exit退出遠端節點

相關推薦

ssh 遠端執行遠端機上指令碼命令

單命令執行: ssh [email protected] "cd /home ; ls" 今天 遠端執行命令發現了一個問題: 當執行下面命令 ssh -o ConnectTimeout=60 -qn [email protected] "cd

使用parallel-ssh批量執行遠端shell命令

pssh使用場景 假設現在需要對數百臺伺服器節點進行配置更新或者執行一些簡短command,而目前並沒有完備的部署工具軟體, 那可以選擇向pssh這樣的並行登入遠端終端並執行指定命令的shell工具。 以前機器節點少的時候,直接用shell寫個for迴圈來執

shell遠端執行 遠端執行指令碼

對於簡單的命令: 如果是簡單執行幾個命令,則 ssh [email protected] "cd /home ; ls" 指令碼如下 #!/bin/bash for node in `cat nodelist` do echo "-------

java類中執行指令碼命令(比如Linux下的指令碼命令等)

可以使用java中的ProcessBuilder執行本地命令或指令碼等工作: 以下是一個簡單的使用java呼叫本地python指令碼的例子。從某工程程式碼中整理出來的,未封裝,僅供參考。 JAVA 程式碼: List<String> commands=

Linux 後臺執行指令碼命令 nohup &

nohup command > myout.file 2>&1 & 命令解析: 使用nohup命令後臺執行命令之後,需要使用exit正常退出當前賬戶,這樣才能保證命令一直在後臺執行。 command>out.file是將comma

Mac 出現正在執行安裝包指令碼等待其他安裝完成的解決辦法

參考資料: https://www.jianshu.com/p/2d75ebf055c5 描述:安裝mysql時出現正在執行安裝包指令碼,等待半小時無果後切出工作管理員,結束安裝器程序,重新開啟安裝包,出現等待其他安裝完成。無法正常安裝。 原因:利用工作管理員殺掉了安裝器但安裝程序仍在進

使用shell指令碼命令列 新增crontab 定時任務

crontab 是運維過程中常用的定時任務執行工具         一般情況下在有新的定時任務要執行時,使用crontab -e ,將開啟一個vi編輯介面,配置好後儲存退出,但是在自動化運維的過程中往往需要使用shell指令碼或命令自動新增定時任務。接下來結束三種(Cent

LINUX系統時間怎麼設定同步指令碼命令

命令列介面操作 1、對於linux系統大多數是命令列介面,所以先介紹字元介面同步時間方法。 首選安裝ntpdate 時間同步服務, 利用yum install  ntpdate  2、接著把linux系統時間同步到windows time公共時間伺服器, ntpdate time.windows

python指令碼實現本地遠端執行命令

功能:1、執行本地shell命令,執行完成後獲取結果2、執行本地shell命令,執行中實時獲取輸出結果3、執行遠端shell命令,執行完成後獲取結果4、執行遠端shell命令,執行中實時獲取輸出結果 實際操作:1、安裝paramiko apt-get install python3-pip libev

Linux下使用SSH非互動式遠端執行命令指令碼

原創文章,轉載請註明— 作者: 黃文海 出處: http://viscent.iteye.com/http://blog.viscenthuang.info     非互動式在遠端主機上執行命令或者指令碼可以幫助我們快速完成一些任務。比如,在叢集環境中,同時在各個結點上的日

php 利用ssh執行遠端本地liunx伺服器命令

/** * 利用ssh執行 遠端或本地liunx伺服器命令 * 雖然可以用 shee_exec來執行本地機命令 但卻無法選擇用哪個使用者來執行 此函式可解決此類問題 * $host ssh 主機名 可以為ip 或 域名 * $port ssh 埠 * $ssh_u

SSH遠端執行Linux Shell命令

使用強大的paramiko Linux伺服器需要注意防火牆設定和SSH的開啟 注意執行的shell命令前提是Linux系統上有的 #!/usr/bin/python #coding=utf-8 import paramiko import threading import

ssh 遠端執行命令

SSH 是 Linux 下進行遠端連線的基本工具,不光可以登入,也可以遠端操作。接下來我們詳細講解一些常用的情況。 1、執行簡單的命令: 1)檢視某臺主機上的磁碟使用情況: $ ssh [email protected] "df -h" ***********

Python開源Devops定時任務管理系統(含定時呼叫介面、定時ssh遠端執行命令

 OpenMangosteen Devops定時呼叫http介面,定時執行SSH命令的WEB定時任務工具。本系統強依賴Flask-APScheduler的功能,只是拓展了web頁面部分。使用Pytho

[轉]python3之paramiko模組(基於ssh連線進行遠端登入伺服器執行命令和上傳下載檔案的功能)

轉自:https://www.cnblogs.com/zhangxinqi/p/8372774.html 閱讀目錄 1、paramiko模組介紹 2、paramiko的使用方法 回到頂部 1、pa

python利用paramiko實現ssh連線及遠端執行命令

python3.6, windows下 1,安裝paramiko模組 依賴cryptography:使用命令easy_install安裝該模組時,如果報錯“...microsoft visual c++ 14.0 is required.”, 可以下載.whl檔案,使用命令pip instal

大作業11-指令碼批量遠端執行命令

然後再寫一個通用的可以批量遠端執行命令的expect指令碼: [[email protected] ~]# vim cmd.expect #!/usr/bin/expect set user [lindex $argv 0]  # 系統使用者 set host

ssh 遠端執行多個命令,有萬用字元要使用雙引號,沒有則可以不用

#!/bin/sh  for i in {2..25}  do         ip=10.161.21.$i         echo $ip         t=`ssh [email protected]$ip    "ls /home/unicom

ssh遠端執行命令並自動退出

ssh命令格式如下: usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D

ssh無密碼登入遠端主機執行特定命令的注意事項

最近的一個專案要結合使用rabbitmq、keepalived、supervisor。其中的一個場景為某個keepalived例項被提升為MASTER後需要到部署了rabbitmq client的遠端主機上kill掉這些client程序。 一般的思路為配置keepalive