2017-03-28 5 views
0

私は自分のbashprofileに入れることができる簡単な普通の関数を書くにはどうすればいいですか? 私は望む任意のホストにコンソールを安全にするために使うことができます。bash_profileで関数を書く方法

でも、安全なコンソールはジャンプホストを経由しなければなりません。それが問題です。

function func_name() { 
ssh jumphostname; 
sc $hostname # from jump host secure console to another host given as input from terminal 
} 

この機能は、ホストをジャンプするためにログインするだけですが、そこから別のホストにセキュアコンソールをセキュアにしません。

-bash-4.1 $ FUNC_NAME host.me.com はjumphost

経由host.me.comにコンソール私を与える必要があり、このことはできないための機能ですか? 私はスクリプトを書く必要がありますか?

+3

いいえあなたはもっと具体的にする必要はありません。これは、あなたの質問をもっと適切に言い換えることをお勧めします。これは、bash関数の記述方法ではなく、ローカルからのsshリモートコントロール駅。 – hmedia1

+0

私があなたがしようとしていることをまとめようとすると、なぜあなたは 'ssh user @ host'とそこから作業できないのか疑問に思ってしまいます。私が言ったように、あなたがより具体的で、おそらくユースケースのシナリオを与えるならば、人々は助けることができるかもしれません。多用途のリモートコントロールと例外処理のために、私はしばしば 'expect'ラッパーを使用します – hmedia1

+0

はい。私はより具体的な質問をしました。 – stackuser

答えて

-2

あなたはifと[の間に空白を残していけないので、その...あなたが欲しい 正しいsintaxが...メキシコから

function con.sole 
{ 
    if [ ssh jumphostname ]; then 
     sc $1; 
    else 
     echo "host not available" 
    fi 
} 

ご挨拶です!

+0

スペースを去った後にも-bash:[:ssh:単項演算子が必要なので、一重引用符を追加しました。今は動作しますが、実際の問題は依然として存在します。 – stackuser

+0

何をしようとしていますか?サーバーを接続して別のサーバーに接続しますか?... local-> server1-> server2? –

+0

私はあなたが ''シェルで何を意味するのかを学ぶ必要があると思います。グループ化演算子ではありません。 – chepner

0

[ ]のコマンドは、コマンドを囲む変数$()をシミュレートしない限り、使用しないでください。まだ確かではないSSHテストに何かを返します。 SSHに接続するのはTTYでなければなりません。TTYには接続できません。これは問題を引き起こすでしょう!

SSHのない例...

[email protected]:~$ if [ "$(cat ~/test.txt)" ]; then echo "Hello World"; else echo "failed"; fi 
Hello World 
[email protected]:~$ if [ "$(cat /this/file/dont/exsist 2>/dev/null)" ]; then echo "Hello World"; else echo "failed"; fi 
failed 

追加:

-bash:SC:コマンド

が見つかりませんこれは、あなたがいないことホストにspreadsheetをインストールしてください。

この機能はホストにジャンプするためにログインするだけですが、そこから別のホストに secureconsoleにはアクセスしません。

あなたは何をしようとしていますか?

SSHは何を知っていますか? リモートTTYs、またはそれ以外の言葉で開く:リモートセキュアコンソールを開きます。

スクリプトを実行してその中にsshログインを置くことはできません。それ以降はすべてのコードが新しいコンソールにあると思われます。

コンソールでsshを実行すると、自分のTTYを取得してコマンドを入力できます。それとも、はるかにありイマイチssh

echo "Hello World!" | ssh [email protected] cat 

を経由して、あなたがそれ、あなたと行うことができますがあなたはまた、いくつかの変数またはテキストを渡すことができ

​​

のように、スクリプト内のいくつかのコマンドと組み合わせてsshを使用しますすべきではない!

リンク以下
+0

bash_profileにエイリアスを作成します。それは通り抜ける。しかし、ログインした後、私はジャンプホストからそのホスト上でscコマンドを実行したい。 – stackuser

+0

'ssh user @ host sc'はあなたが探しているものですか?私は自分の投稿を更新しました。 – suleiman

0

はあなたが先に出力例については

ssh [email protected]_address "command to execute" 

を行くことに役立つだろう:ローカルホストのコマンド@

[email protected]:~/work/images$ ssh [email protected] echo "hai" 
[email protected]'s password: 
hai 
[email protected]:~/work/images$ 

のssh arulは、ログインして、現在のプロンプトでログインして印刷された「エコーハイ」コマンド」になります

引用:https://www.cyberciti.biz/faq/unix-linux-execute-command-using-ssh/

+0

ようこそStackOverflowへ。リンクから直接関連するものを含め、実際にあなた自身が意図した答えを実際に説明し、さらに詳細な情報のみをリンクすることで、通常、リンクのみの回答を改善することができます。例えば、 https://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers – kojiro

+0

あなたの貴重な入力をありがとう@Okojiro –

0

私は目を記述しますこれは、別のコマンド、testと同じである

con.sole() { 
    if ! ssh -T jumphostname true; then 
     printf 'Jump host "%s" not available.\n' jumphostname >&2 
     return 1 
    fi 
    sc "[email protected]" 
} 

The square brace isn't part of the if statement syntax.あります。

+0

上記のスクリプトは、ジャンパスまで私を得ます。その後con.sole hostname.com 警告:既知のホストのリストに「jumphost.com(RSA)」が永久に追加されました。 -bash:sc:コマンドが見つかりません – stackuser

関連する問題