2017-10-05 18 views
0

sedを変数として文字列に置き換える方法は?sedを変数として文字列に置き換える方法は?

#!/bin/bash 
ssh $1 ssh-keyscan -t rsa $1 > /tmp/$1 
RSA=$(cat /tmp/$1) 
echo $RSA 
sed -i 's:'^"$1".*':'"$RSA"':' /etc/ssh/ssh_known_hosts 
cat /etc/ssh/ssh_known_hosts | grep $1 

それはRSAに変数を格納しますが交換されていない、sedの一部が悪いのかわかりません。

+0

私たちにいくつかの価値観を見せてもらえますか?どのようにそれが置き換えられていないと思いますか? – Inian

+0

$ 1は削除ノードのホスト名です。ファイルをcatした場合、同じ古いrsaキーエントリがあります。 – asokan

+0

$ 1の値は何ですか? – choroba

答えて

2

次のコマンドを使用できます。

#!/bin/bash 
ssh $1 ssh-keyscan -t rsa $1 > /tmp/$1 
RSA=$(cat /tmp/$1) 
echo $RSA 
sed -i -e "/$1/ d" -e "/^$1/ a $RSA" /etc/ssh/ssh_known_hosts 
cat /etc/ssh/ssh_known_hosts | grep $1 

行が存在しない場合は追加し、存在する場合は置換するという要件に応じて変更しました。

+0

sed:-e式1、char 3:終了しない 's 'コマンド RSAトークン文字列に空白があります/ – asokan

+0

新しいものとして追加する – asokan

+0

次に、2つのコマンドを実行する必要があります。 'sed -i -e"/$ i/d "-e"/^ $ 1/c $ RSA "/ etc/ssh/ssh_known_hosts' –

関連する問題