この文書を1行で使用しますか?

この文書を1行で使用しますか?

sshここでは、ドキュメントを使用してリモートホストでコマンドを実行する簡単なスクリプトがあります。

コマンドラインから1行のコードでこれを実行しようとしていますが、ここで説明されているようにスクリプトの外部で実行する方法がわかりません。可能ですか?ここで文書をインターネットで検索して読むのに時間を費やしましたが、そのようなことは起こりませんでした。

このスクリプトはうまく動作します。 SSHを介してリモートで実行するにはここにドキュメント部分が必要awkですが、通常は簡単な作業のために簡単な作業を実行するのが好きです。

#!/bin/bash
# it looks up all my hosts with 'db' in the name
# then gets the PID of any rsyncs running as user 'research'
# and pumps them into xargs

getHosts=(`curl --silent "http://assetts.lab/all_hosts" | grep -v ^# | awk -F" " '{print$1}'|grep db`)
for BOX in ${getHosts[@]};do
    echo "$BOX: "
    ssh -T sshUser@$BOX <<"EOF"
ps -ef | egrep "rsync|iasync" | awk -F" " '{if ($1 ~ "research") print $2}'|sudo xargs -i ps -fp '{}'
#ps -ef | egrep "rsync|iasync" | awk -F" " '{if ($1 ~ "research") print $2}'|sudo xargs -i kill '{}'
EOF
    echo
done

おそらく簡単なものが欠けているでしょう...とにかく提案していただきありがとうございます:)

ベストアンサー1

私はここで文書を使用するために何もする必要はないと思いますが、するスクリプトの他の点を大幅に簡素化することができます(これにより、ここでドキュメントが使用されなくなります)。

まず、配列を埋めるパイプを単純化することができ(パイプするgetHosts理由はほとんどありません)、配列全体を削除することができます。grepawk

curl -s 'http://assetts.lab/all_hosts' |
awk -F ' ' '!/^#/ && $1 ~ /db/ { print $1 }' |
while IFS= read -r remote; do
   # rest of code
done

ここでは、++コマンドをgrep1つのコマンドにまとめました。また、ホスト名を中間変数に保存せずにループに直接入力するコマンドを使用しました。awkgrepawkawk

rsyncループ内では、ユーザーに属するプロセスに関する情報を取得したいようです。iasyncresearch

次のことをお勧めしますpgrep

pgrep -l -U research 'rsync|iasync'

これらのプロセスにシグナルを送信するには、代わりにpkillinを使用してpgrepオプション-lを削除してください。

完全なスクリプトは次のとおりです。

#!/bin/sh

curl -s 'http://assetts.lab/all_hosts' |
awk -F ' ' '!/^#/ && $1 ~ /db/ { print $1 }' |
while IFS= read -r remote; do
   printf 'Processing host "%s"\n' "$remote"
   ssh "$remote" 'pgrep -l -U research "rsync|iasync"'
done

または以下を使用してくださいxargs

#!/bin/sh

curl -s 'http://assetts.lab/all_hosts' |
awk -F ' ' '!/^#/ && $1 ~ /db/ { print $1 }' |
xargs -I {} sh -c '
   printf "Processing host \"%s\"\n" "$1"
   ssh "$1" "pgrep -l -U research \"rsync|iasync\""' sh {}

サポートしている場合は、一度に複数のプロセス実行をxargs使用できます。ここでは、引き続き実行する必要がある同時コマンドの数です。sh -c-P nnsh -cxargs

おすすめ記事