2017-01-08 15 views
1

私はgame in a terminalを再生しています。それはssh接続を使用し、各レベルのユーザーとパスワードの異なるペアを持っています。そのエイリアスを使用して呼び出された関数でbashエイリアス名を使用します。

これらのペアを格納するために私のbashエイリアスを使用します。つまり、パスワードとレベル数の2つのパラメータを持つbash関数を呼び出す各レベルのエイリアスがあります。

function log.as.bandit() { 
    sshpass -p $1 ssh [email protected] 
} 
alias bandit14="log.as.bandit secretPass 14" 
alias bandit15="log.as.bandit differentSecretPass 15" 

パラメータとしてパスワードだけを渡して、私が使用したエイリアスからユーザー名を取得することができればさらに簡単になります。

質問:
が可能という別名で呼ばれてきた機能にエイリアス名を使用することですか?例では

:いいえ、あなたは別名でそれを行うことはできません。私の知る限りでは

function log.as.bandit() { 
    sshpass -p $1 ssh [email protected] 
} 
alias bandit14="log.as.bandit secretPass" 
alias bandit15="log.as.bandit differentSecretPass" 

答えて

5

しかし、あなたにできることは次のとおりです。

function log.as.bandit() { 
    sshpass -p "$1" ssh "${FUNCNAME[1]}"@bandit.labs.overthewire.org 
} 
bandit14() { log.as.bandit secretPass; } 
bandit15() { log.as.bandit differentSecretPass; } 

すなわち、使用機能の代わりにエイリアス。

FUNCNAMEは、現在実行中の機能の名前を含む配列です。 ${FUNCNAME[0]}は、現在の関数自体の名前です(log.as.bandit)。 ${FUNCNAME[1]}は、呼び出し関数の名前です(bandit14またはbandit15)。

+0

私はCで 'const char * argv []'と同じような考え方を書いていたことを忘れていました。これはうまくいっています。 – lewiatan

関連する問題