ファイル名をxargsに渡して切り取る方法は? [閉鎖]

ファイル名をxargsに渡して切り取る方法は? [閉鎖]

サーバーにsshで接続するスクリプトを作成し、ログファイルを切り捨てる必要があります。

私のスクリプトは次のとおりです

#!/bin/bash

for server in $(cat c10_servers.txt); do
    ssh $server "ls /var/log/hello grep -i hello.log. | echo "" | xargs echo "" | sudo tee"
done

これはファイル名だけを表示するだけでこれがうまくいかないので、私が何か間違いをしているのだろうかと思います。

ベストアンサー1

変える:

ls /var/log/hello grep -i hello.log. | echo "" | xargs echo "" | sudo tee

努力する:

for f in /var/log/hello/*hello.log.*; do sudo truncate --size 0 "$f"; done

SSH経由で送信するには、次の場所に入力してください。アポストロフィ、二重引用符ではありません:

for server in $(cat c10_servers.txt); do
  ssh "$server" 'for f in /var/log/hello/*hello.log.*; do sudo truncate --size 0 "$f"; done'
done

command を使用せずにこれを行うことができますが、truncate引用符がさらに見苦しくなります。

for server in $(cat c10_servers.txt); do
  ssh "$server" 'sudo sh -c '\''for f; do : > "$f"; done'\'' sudo-sh /var/log/hello/*hello.log.*'
done

ルートとして直接SSHを実行できる場合、コマンドはより簡単です。

for server in $(cat c10_servers.txt); do
  ssh -l root "$server" 'for f in /var/log/hello/*hello.log.*; do : > "$f"; done'
done

おすすめ記事