通過 ssh 會話執行 bash 別名 | Linux 中國
本文導航◈ 如何用 ssh 客戶端執行命令14%◈ 理解 bash shell 以及命令的型別27%◈ 在 Unix 系統上無法直接通過 ssh 客戶端執行 bash 別名46%◈ 相關資料86%編譯自 | https://www.cyberciti.biz/faq/use-bash-aliases-ssh-based-session/
作者 | Vivek Gite
譯者 | lujun9972
我在遠端主機上上設定過一個叫做 file_repl 的 bash 別名 [1]。當我使用 ssh 命令登入遠端主機後,可以很正常的使用這個別名。然而這個 bash 別名卻無法通過 ssh 來執行,像這樣:
$ ssh [email protected].cyberciti.biz file_repl
bash:file_repl:command not found
我要怎樣做才能通過 ssh 命令執行 bash 別名呢?
SSH 客戶端 (ssh) 是一個登入遠端伺服器並在遠端系統上執行 shell 命令的 Linux/Unix 命令。它被設計用來在兩個非信任的機器上通過不安全的網路(比如網際網路)提供安全的加密通訊。
如何用 ssh 客戶端執行命令
通過 ssh 執行 free
命令或 date 命令[2] 可以這樣做:
$ ssh [email protected].cyberciti.biz date
結果為:
TueDec2609:02:50 UTC 2017
或者:
$ ssh [email protected].cyberciti.biz free -h
結果為:
total used free shared buff/cache available
Mem:2.0G428M138M145M1.4G1.1G
Swap:0B0B0B
理解 bash shell 以及命令的型別
bash shell[3] 共有下面幾類命令:
ll
☉ 關鍵字,比如 if
☉ 函式 (使用者自定義函式,比如 genpasswd
)☉ 內建命令,比如 pwd
☉ 外部檔案,比如 /bin/date
type 命令[4] 和 command 命令[5] 可以用來檢視命令型別:
$ type -a date
dateis/bin/date
$ type -a free
free is/usr/bin/free
$ command -V pwd
pwdis a shell builtin
$ type -a file_repl
is aliased to `sudo -i /shared/takes/master.replication'
date
和 free
都是外部命令,而 file_repl
是 sudo -i /shared/takes/master.replication
的別名。你不能直接執行像 file_repl
這樣的別名:
$ ssh [email protected] file_repl
在 Unix 系統上無法直接通過 ssh 客戶端執行 bash 別名
要解決這個問題可以用下面方法執行 ssh 命令:
$ ssh-t [email protected] /bin/bash-ic 'your-alias-here'
$ ssh-t [email protected] /bin/bash-ic 'file_repl'
ssh
命令選項:
-t
:強制分配偽終端。可以用來在遠端機器上執行任意的[6] 基於螢幕的程式,有時這非常有用。當使用 -t
時你可能會收到一個類似 “bash: cannot set terminal process group (-1): Inappropriate ioctl for device. bash: no job control in this shell .” 的錯誤。bash shell 的選項:
◈-i
:執行互動 shell,這樣 shell 才能執行 bash 別名。◈ -c
:要執行的命令取之於第一個非選項引數的命令字串。若在命令字串後面還有其他引數,這些引數會作為位置引數傳遞給命令,引數從 $0
開始。總之,要執行一個名叫 ll
的 bash 別名,可以執行下面命令:
$ ssh-t [email protected].cyberciti.biz -ic 'll'
結果為:
Running bash aliases over ssh based session when using Unix or Linux ssh cli
下面是我的一個 shell 指令碼的例子:
#!/bin/bash
I="tags.deleted.410"
O="/tmp/https.www.cyberciti.biz.410.url.conf"
box="[email protected]"
[!-f "$I"]&&{echo"$I file not found。";exit10;}
>$O
cat"$I"|sort|uniq|while read -r u
do
uu="${u##https://www.cyberciti.biz}"
echo"~^$uu 1;">>"${O}"
done
echo"Config file created at ${O} and now updating remote nginx config file"
scp"${O}" ${box}:/tmp/
ssh ${box}/usr/bin/lxc file push /tmp/https.www.cyberciti.biz.410.url.conf nginx-container/etc/nginx/
ssh-t ${box}/bin/bash-ic 'push_config_job'
相關資料
更多資訊請輸入下面命令檢視 OpenSSH 客戶端[7] 和 bash 的 man 幫助 [8]:
$ manssh
$ manbash
$ help type
$ help command
via: https://www.cyberciti.biz/faq/use-bash-aliases-ssh-based-session/
作者:Vivek Gite[10] 譯者:lujun9972 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出
LCTT 譯者lujun9972 ? ? ? ?共計翻譯:75 篇貢獻時間:55 天推薦文章
< 左右滑動檢視相關文章 >
點選圖片、輸入文章 ID 或識別二維碼直達
原文連結請訪問“原文連結”獲得可點選的文內連結、全尺寸原圖和相關文章。相關推薦
通過 ssh 會話執行 bash 別名 | Linux 中國
我在遠端主機上上設定過一個叫做 file_repl 的 bash 別名 。當我使用 ssh 命令
通過玩命令行遊戲來測試你的 BASH 技能 | Linux 中國
我們來看看幾款能幫助你實時學習和練習 Linux 命令的遊戲。這些遊戲不是消磨時間或者令人驚詫的
linux 下如何通過ssh到其他機器然後執行命令?
在Linux下經常寫shell指令碼,當然少不了需要在各臺機器上執行命令了。 假如現在我要在10.2.226.201上寫shell並且執行這個shell指令碼。可是這個指令碼需要在10.2.226.202和10.2.226.203上執行一下命令。如何實現呢? 摸索了幾種方法
如何通過ssh登入伺服器執行linux指令-ganymed的簡單使用(一)
ganymed是用java實現的一個ssh協議包.通過他可以直接在java程式中連線ssh伺服器並執行指令. 使用步驟如下: 1.建立Connection: Connection connection = new Connection("192.168.73.246")
如何在linux下通過ssh執行X圖形軟體
伺服器端:編輯/etc/ssh/sshd_config中的以下內容 啟用AllowTcpForwarding 啟用X11Forwarding 將X11DisplayOffset設定為10. 啟用X11UseLocalhost 客戶機端:編輯/etc/
阿裏雲(ECS)Linux客戶端SSH會話連接超時OperationTimedOut
med 客戶端連接 cnblogs ive color client out linux服務器 count 問題描述:使用SecureCRT等SSH客戶端連接Linux服務器時,提示Operation timed out。 問題原因:SSH服務未配置或註釋掉向SSH客戶端連
通過ssh遠程執行命令導入定時任務報錯----解決過程
linux ssh su 今天在服務器中通過ssh遠程執行批量導入定時任務時發生了一個問題:總結如下,遠程服務器已設置好ssh秘鑰登錄,登錄用戶為普通用戶,但已設置好擁有免密sudo權限ssh 1.1.1.1 "sudo su -c "echo ‘30 5 * * 5 /bin/sh /root/
win10上使用Xshell通過ssh連接Linux
service 直接 sudo 部分 penssh host 怎麽 start .net core Windows 10上現在能安裝Linux子系統了,正好最近.Net Core也逐漸發展起來了,我也就在自己電腦上搞了一下 在Windows 10上安裝Ubuntu的過程就不
菜鳥們,通過這幾個樣例,包你學會 uptime 命令的使用方法 | Linux 中國
望名生義。uptime 命令告訴你係統啟動了(執行了)多長時間。這是語法:-- Himanshu Arora 本文導航◈ Linux uptime 命令 09%◈ Q1、怎樣使用 uptime 命令 22%◈ Q2、怎樣以更人
Linux 中通過ssh訪問Github 設定
Linux ssh訪問Github相關配置 如果在Linux t
SSH遠端執行Linux Shell命令
使用強大的paramiko Linux伺服器需要注意防火牆設定和SSH的開啟 注意執行的shell命令前提是Linux系統上有的 #!/usr/bin/python #coding=utf-8 import paramiko import threading import
Linux下執行bash指令碼顯示“: /usr/bin/env: "bash\r": 沒有那個檔案或目錄
用 ./ 執行bash指令碼檔案出現 報錯資訊 /usr/bin/env: "bash\r": 沒有那個檔案或目錄 錯誤原因:這主要是因為bash後面多了\r這個字元的原因。在linux終端下,輸出\r會什麼都不顯示,只是把游標移到行首。於是終端雖然輸出了/usr/bin/env bash,
無需密碼通過ssh執行rsync來同步檔案的方法
1.通過ssh執行rsync(需要密碼) 通過ssh帳戶(需要密碼)執行rsync,將檔案同步映象到遠端伺服器。 下面這個例子將本地的/home/ramesh同步到遠端目錄/backup/ramesh(伺服器地址192.168.200.10)。 執行以下操作時,伺服器將會提示需要使用者使
IntelliJ IDEA實現遠端連線linux,並上傳檔案到linux伺服器(SSH會話功能和SFTP功能)
注意: eclipse的SSH會話功能和SFTP功能這裡不會說 點選以下連結可檢視 eclipse的SSH會話功能和SFTP功能 而IntelliJ IDEA(以下簡稱為IDEA)這麼強大的開發工具自然也有該功能,這篇部落格就介紹一下IDEA的SSH會話功能
Jmeter中使用SSH外掛,連線遠端linux機器執行命令
一、Why 在雲主機測試中,需要使用SSH協議連線雲主機進行相關操作 在python中使用paramiko庫很好實現,在如果要使用jmeter做效能測試時,怎麼做? 二、解決 既然原生jmeter沒有相關的ssh sampler,那就先按思路看看網上有沒有現成的,沒有再自己寫,googl
通過SSH到遠端伺服器(不登陸)執行命令
背景:在運維工作中需要遠端管理多臺linux伺服器,並在伺服器上執行指令碼/命令來收集相關資料。為了提高運維效率,整理以下指令碼 前期準備:設定跳板機免密碼登陸到伺服器 指令碼: 以下指令碼實現功能,在遠端伺服器192.168.4.12儲存主機名到/opt/hostname [[em
java 通過 ssh 執行 shell 命令
public abstract class Shell implements AutoCloseable{ abstract boolean executeCommands(String... commands); abstract Strin
10 個 Linux 中方便的 Bash 別名
你有多少次在命令列上輸入一個長命令,並希望有一種方法可以儲存它以供日後使用?這就是 Bash 別名派上用場的地方。它們允許你將長而神祕的命令壓縮為易於記憶和使用的東西。需要一些例子來幫助你入門嗎?沒問題! 要使用你建立的 Bash 別名,你需要將其新增到 .bas
Linux通過ssh遠端安裝Python3.6.1安裝包
linux系統環境自帶python2.6,但有時我們專案使用的版本可能是3.x以上等等,此時我們需要在linux中再安裝專案所需的python版本,此時就涉及多版本共存問題了,很多同學在安裝多個版本Python時會遇到各種問題 這裡主要演示通過ssh遠端安裝安裝包 1
如何在 Linux 上鎖定虛擬控制檯會話 | Linux 中國
我知道有個簡單的技巧來鎖定自己的會話,同時仍然允許其他使用者在其他虛擬控制檯上使用該系統。--