質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

grep

grepはコマンドライン上でテキスト検索を可能にするユーティリティーです。元はUnixのために用意されたものです。

samba

Samba(サンバ)とは、UNIX系OSにおいてSMBを用いたサービスを提供するためのソフトウェアです。ネットワークを通じて、ファイル共有及びプリンタ共有などのサービスをWindowsマシンへと提供します。ライセンス体系GPLに基づきフリーソフトウェアとして公開されています。

Q&A

解決済

1回答

1853閲覧

grepとawkの組み合わせによる任意文字の抽出について

kamekame0505

総合スコア12

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

grep

grepはコマンドライン上でテキスト検索を可能にするユーティリティーです。元はUnixのために用意されたものです。

samba

Samba(サンバ)とは、UNIX系OSにおいてSMBを用いたサービスを提供するためのソフトウェアです。ネットワークを通じて、ファイル共有及びプリンタ共有などのサービスをWindowsマシンへと提供します。ライセンス体系GPLに基づきフリーソフトウェアとして公開されています。

0グッド

0クリップ

投稿2021/11/25 01:32

前提

Centos8 streamにてsambaサーバを構築いたしました。しかしながら一部不具合が出ており暫定対策として
以下のようなコマンドをシェルスクリプトで定期実行させ凌いでおります。

sh

1smbstatus | grep DENY_ALL | awk '[ print "kill" , $1 }' | sh

実現したいこと

全てのDENY_ALLをgrepで取得しkillコマンドが実行されてしまうため正常ログにも影響が出ており、下記smbstatusの異常ログ出力時「/home/fs-dentsu04-folder/FS」が出た場合に限りgrepとawkを組み合わせてkillコマンドを動かしたいと考えております。
※正常ログは無視しkillコマンドを実行させない

log

1#異常ログ 2765670 3000395 DENY_ALL 0x100080 RDONLY NONE /home/fs-dentsu04-folder/FS . Thu Nov 11 17:20:06 2021

log

1#正常ログ 2438475 3000172 DENY_ALL 0x1f019f RDWR NONE /home/fs-dentsu04-folder/FS 02_専用フォルダ/test/test1/test2/test3/test.xls Thu Nov 11 17:23:47 2021

※正常ログは書き換えております。

実施した事

awkの部分を修正しましたが、/home/fs-dentsu04-folder/FSの後続もawkで取得してしまい上手く行きませんでした。

実行方法につきましてご教授お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

itagagaki

2021/11/25 01:46

修正したコードも書いてください。 異常ログも正常ログも同じ /home/fs-dentsu04-folder/FS が含まれているようですが、何を判定するのでしょうか。
guest

回答1

0

ベストアンサー

CentOS 8 であれば GNU grep がインストールされていると思いますので、PCRE を使えば awk は必要ないでしょうし、sh にコマンド文字列を渡すのではなく、xargs で処理すればいいのかな、と。

bash

1$ grep --version 2grep (GNU grep) 3.6 3 4$ smbstatus | grep -Po -e '^(\d+)(?=.*DENY_ALL.*/home/fs-dentsu04-folder/FS)' | xargs kill

投稿2021/11/25 02:05

melian

総合スコア20655

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kamekame0505

2021/11/26 13:23

解答ありがとうございます。awkを使用せずにxargsで処理する方法は存じておりませんでした。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問