① ssh 遠程執行awk命令並賦值到變數
換一個思路,ssh執行的時候只需要取回足夠的信息就好了,至於過濾、做awk可以放在本地上執行,這樣就可以避免$轉義等麻煩的問題
例如
Mem=$([email protected]"free|grepMem"|awk'{print$2}')
② 如何通過SSH遠程運行命令自動化
從客戶端來看,SSH提供兩種級別的安全驗證。 第一種級別(基於口令的安全驗證),只要你知道自己的帳號和口令,就可以登錄到遠程主機,並且所有傳輸的數據都會被加密。但是,這種驗證方式不能保證你正在連接的伺服器就是你想連接的伺服器。
③ 怎麼通過ssh在遠程Host執行交互命令
ssh執行遠程操作
命令格式
復制代碼 代碼如下:
ssh -p $port $user@$p 'cmd'
$port : ssh連接埠號
$user: ssh連接用戶名
$ip:ssh連接的ip地址
cmd:遠程伺服器需要執行的操作
准備工作
基於公私鑰認證或者用戶名密碼認證能確保登錄到遠程local2伺服器(有點基本運維知識的人做這個事情都不是問題)
cmd如果是腳本,注意絕對路徑問題(相對路徑在遠程執行時就是坑)
不足
這個命令可以滿足我們大多數的需求,但是通常運維部署很多東西的時候需要root許可權,但是有幾處限制:
遠程伺服器local2禁止root用戶登錄
在遠程伺服器腳本里轉換身份用expect需要send密碼,這樣不夠安全
ssh的-t參數
復制代碼 代碼如下:
-t Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty.
中文翻譯一下:就是可以提供一個遠程伺服器的虛擬tty終端,加上這個參數我們就可以在遠程伺服器的虛擬終端上輸入自己的提權密碼了,非常安全
命令格式
復制代碼 代碼如下:
ssh -t -p $port $user@$ip 'cmd'
示例腳本
復制代碼 代碼如下:
#!/bin/bash
#變數定義
ip_array=("192.168.1.1" "192.168.1.2" "192.168.1.3")
user="test1"
remote_cmd="/home/test/1.sh"
#本地通過ssh執行遠程伺服器的腳本
for ip in ${ip_array[*]}
do
if [ $ip = "192.168.1.1" ]; then
port="7777"
else
port="22"
fi
ssh -t -p $port $user@$ip "remote_cmd"
done
這個方法還是很方便的,-t虛擬出一個遠程伺服器的終端,在多台伺服器同時部署時確實節約了不少時間啊!
④ 我已經登陸SSH程序了,請問這么使用SSH執行遠程計算機的程序指令時是什麼啊
指令就是你執行的shell命令
比如我要運行php
輸入:
php test.php
就會執行
第一個php是執行程序的名稱
⑤ ssh如何遠程執行命令
ssh支持遠程命令參數
可以類似方式嵌套:
alias pushbaby='cd /Users/xuqiang/Develop/work/tickets/baby/deploy;scp -r -v -i ~/.ssh/pedal/id_rsa baby.tar.gz baby.sql.txt [email protected]:/home/qiang.xu/tmp;ssh [email protected] -i ~/.ssh/pedal/id_rsa "source ~/.bash_profile;pushbaby";ssh [email protected] -i ~/.ssh/pedal/id_rsa "ssh [email protected] \"source ~/.bash_profile;pushbaby\""'更新要注意的是alias在非交互模式無法使用,需將替換成function
⑥ shell腳本中怎麼ssh上遠程機執行命令
先在兩台機子上建立信任,ssh-key
具體方法網路下就有
腳本里的命令是
ssh 用戶@ip
⑦ linux中ssh如何遠程執行一條命令,而且不登錄遠程伺服器
ssh [email protected] 'command ...'
scp [email protected]:/remote/path /local/path
scp /local/path [email protected]:/remote/path
- X forward
ssh -X [email protected]
xcommand ...
- Tunnel / Portforward
ssh -L 1234:remote.machine:4321 [email protected]
ssh -R 1234:local.machine:4321 [email protected]
ssh -L 1234:other.machine:4321 [email protected]
# vi /etc/ssh/sshd_config
PermitRootLogin no
# vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
# service sshd restart
# su - user1
$ mkdir ~/.ssh 2>/dev/null
$ chmod 700 ~/.ssh
$ touch ~/.ssh/authorized_keys
$ chmod 644 ~/.ssh/authorized_keys
登入端:
$ ssh-keygen -t rsa
(按三下 enter 完成﹔不需設密碼,除非您會用 ssh-agent 。)
$ scp ~/.ssh/id_rsa.pub [email protected]:id_rsa.pub
(若是 windows client, 可用 puttygen.exe 產生 public key,
然後復制到 server 端後修改之, 使其內容成為單一一行.)
回到 server 端:
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
$ rm ~/id_rsa.pub
$ exit
# vi /etc/pam.d/su
auth required /lib/security/$ISA/pam_wheel.so use_uid
# visudo
%wheel ALL=(ALL) ALL
# gpasswd -a user1 wheel
# vi /etc/pam.d/sshd
auth required pam_listfile.so item=user sense=allow file=/etc/ssh_users ōnerr=fail
# echo user1 >> /etc/ssh_users
⑧ ssh連接centos遠程伺服器運行指令的問題
總結下使用ssh遠程執行命令需要注意點:
一般我們會使用ssh ip "執行命令"這種格式來執行遠程是shell命令,但是如果是簡單的一些操作還好,比如cd,rm,ls,mv等命令一般不會出問題
,但是如果你的腳本任務是,殺死多台機器上的hadoop或者elasticsearch進程,你會怎麼做?
倫理片http://www.dotdy.com/
直接使用:
ssh h1 "kill -9 `jps | grep Elastic* | gawk '{print $1}' ` " 殺死es進程,你會發現,它竟然沒有生效? 明明在本地執行
kill -9 `jps | grep Elastic* | gawk '{print $1}' `
這個命令是可以生效的,為啥,放到遠程執行命令中就失效了呢?
其實原因很簡單,就是因為沒有轉義造成的,包括awk變數名引用都需要轉義,否則,你會發現,雖然能執行,但結果依舊是不準確的,注意linux中
單引號(所有命令均被當成普通字元處理)
雙引號(可引用變數名)
反引號(可以執行linux腳本命令)的區別
看最終的正確的寫法:
Java代碼
ssh$host"es_pid=`jps|grepElasticsearch|gawk'{print$1}'`&&kill$es_pid"
⑨ ssh遠程執行linux 命令是單引號還是雙引號
單引號與雙引號都可以,只是在本地的操作系統中,雙引號內的環境變數(例如$HOME,$CC)等會被替換成系統變數的值,而單引號則不會。
例如
$ export LS=ls
$ ssh username@ip "$LS"
Desktop
Documents
Downloads
輸出結果是在遠端當前目錄執行ls命令的輸出結果
然而當我們使用單引號時候則不會得到任何輸出,因為遠端系統中根本沒有$LS這個命令。
⑩ 請教如何在Bash里調用ssh遠程執行命令
直接將所有可執行的各種命令寫在 bash 的 SHELL 腳本文件中即可。當然了,至於說該 SHELL 腳本文件是否可以執行?並不是說只要你的SHELL腳本文件中的命令都是可執行的,就能夠正確執行的。必須要使用命令:chmod +x my_shell.txt 將其修改成可執行許可權,且 SHELL 腳本文件中的每一個命令都是擁有 x 許可權(可執行許可權)的,才能夠在命令行狀態 $ 下面正常執行。