1. 程式人生 > >通過 ssh 會話執行 bash 別名 | Linux 中國

通過 ssh 會話執行 bash 別名 | Linux 中國

640?wx_fmt=png&wxfrom=5&wx_lazy=1我在遠端主機上上設定過一個叫做 file_repl 的 bash 別名 。當我使用 ssh 命令登入遠端主機後,可以很正常的使用這個別名。然而這個 bash 別名卻無法通過 ssh 來執行-- Vivek Gite
本文導航◈ 如何用 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 來執行,像這樣:

  1. $ ssh [email protected].cyberciti.biz file_repl

  2. bashfile_replcommand not found

我要怎樣做才能通過 ssh 命令執行 bash 別名呢?

SSH 客戶端 (ssh) 是一個登入遠端伺服器並在遠端系統上執行 shell 命令的 Linux/Unix 命令。它被設計用來在兩個非信任的機器上通過不安全的網路(比如網際網路)提供安全的加密通訊。

如何用 ssh 客戶端執行命令

通過 ssh 執行 free 命令或 date 命令[2] 可以這樣做:

  1. $ ssh [email protected].cyberciti.biz date

結果為:

  1. TueDec26090250 UTC 2017

或者:

  1. $ ssh [email protected].cyberciti.biz free -h

結果為:

  1. total used free shared buff/cache available

  2. Mem2.0G428M138M145M1.4G1.1G

  3. Swap0B0B0B

理解 bash shell 以及命令的型別

bash shell[3] 共有下面幾類命令:

☉ 別名,比如 ll☉ 關鍵字,比如 if☉ 函式 (使用者自定義函式,比如 genpasswd)☉ 內建命令,比如 pwd☉ 外部檔案,比如 /bin/date

type 命令[4] 和 command 命令[5] 可以用來檢視命令型別:

  1. $ type -a date

  2. dateis/bin/date

  3. $ type -a free

  4. free is/usr/bin/free

  5. $ command -V pwd

  6. pwdis a shell builtin

  7. $ type -a file_repl

  8. is aliased to `sudo -i /shared/takes/master.replication'

date 和 free 都是外部命令,而 file_repl 是 sudo -i /shared/takes/master.replication 的別名。你不能直接執行像 file_repl 這樣的別名:

  1. $ ssh [email protected] file_repl

在 Unix 系統上無法直接通過 ssh 客戶端執行 bash 別名

要解決這個問題可以用下面方法執行 ssh 命令:

  1. $ ssh-t [email protected] /bin/bash-ic 'your-alias-here'

  2. $ 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 別名,可以執行下面命令:

  1. $ ssh-t [email protected].cyberciti.biz -ic 'll'

結果為:

0?wx_fmt=jpeg

Running bash aliases over ssh based session when using Unix or Linux ssh cli

下面是我的一個 shell 指令碼的例子:

  1. #!/bin/bash

  2. I="tags.deleted.410"

  3. O="/tmp/https.www.cyberciti.biz.410.url.conf"

  4. box="[email protected]"

  5. [!-f "$I"]&&{echo"$I file not found。";exit10;}

  6. >$O

  7. cat"$I"|sort|uniq|while read -r u

  8. do

  9.    uu="${u##https://www.cyberciti.biz}"

  10. echo"~^$uu 1;">>"${O}"

  11. done

  12. echo"Config file created at ${O} and now updating remote nginx config file"

  13. scp"${O}" ${box}:/tmp/

  14. ssh ${box}/usr/bin/lxc file push /tmp/https.www.cyberciti.biz.410.url.conf nginx-container/etc/nginx/

  15. ssh-t ${box}/bin/bash-ic 'push_config_job'

相關資料

更多資訊請輸入下面命令檢視 OpenSSH 客戶端[7] 和 bash 的 man 幫助 [8]

  1. $ manssh

  2. $ manbash

  3. $ help type

  4. $ help command

via: https://www.cyberciti.biz/faq/use-bash-aliases-ssh-based-session/

作者:Vivek Gite[10] 譯者:lujun9972 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

LCTT 譯者0?wx_fmt=pnglujun9972 ? ? ? ?共計翻譯:75 篇貢獻時間:55 天

推薦文章

< 左右滑動檢視相關文章 >

0?wx_fmt=png0?wx_fmt=png0?wx_fmt=png0?wx_fmt=png0?wx_fmt=gif0?wx_fmt=gif

點選圖片、輸入文章 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 中國

我知道有個簡單的技巧來鎖定自己的會話,同時仍然允許其他使用者在其他虛擬控制檯上使用該系統。--