sshのラッパーを作成し、
alias ssh="${HOME}/bin/my_ssh" としておき、ssh hoge を実行すれば、
my_ssh内で、sshpass -p hogehoge hoge が実行されるようにしています。
しかし、ssh -v hoge など、
オプションをつけて実行する場合に対応できていません。
getopts等で、'ユーザー@ホスト'の部分だけ抜き取る方法はないでしょうか。
while getopts vTo... OPT
do
case $OPT in
v) #xxxx ;;
T) #xxxx ;;
esac
done
shift $((OPTIND - 1))
とする以外にどんな方法があるのでしょうか。
bash
1if [[ $1 =~ .*@.* ]] ; then 2 USER=$(echo $1 | awk -F '@' '{print $1}') 3 HOST=$(echo $1 | awk -F '@' '{print $2}') 4 TARGET="${USER}@${HOST}" 5else 6 HOST=$1 7 TARGET=$HOST 8fi 9case ${HOST} in 10 hoge) 11 sshpass -p hogehoge $TARGET 12 192.168.*) 13 /usr/bin/ssh $TARGET
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/13 15:55
2018/10/13 15:57
2018/10/14 01:58