最新記事

パターンに基づく検索後の数と行の印刷
text-processing
awk
sed
scripting
uniq

パターンに基づく検索後の数と行の印刷

複数のログファイルにこのような行があります。 ファイル1: Line 203:Caused by :arithmatic overflow exception Line 204:at com.abc.java ファイル2: Line 105:Caused by : ???String out of bound exception Line 206 :at com.def.java 上記のパターンを含むファイルがたくさんあります。これらすべてのファイルで203行と204行の組み合わせの発生回数を計算する方法

Admin

Muttを使用してbashスクリプトの受信トレイメッセージにアクセスできますか?
bash
scripting
email
mutt

Muttを使用してbashスクリプトの受信トレイメッセージにアクセスできますか?

エラーデータを収集してチケットシステムに送信するスクリプトがあります。既存のチケットに進行状況がある場合は、電子メールの受信トレイにアクセスしてチケット番号を受け取り、返信に含めたいと思います。これにより、チケットシステムが新しいチケットを毎回作成するのではなく、既存のチケットに新しい情報を含めることができます。可能ですか? 私はこれを行う方法をオンラインで探していましたが、プログラムで受信トレイにアクセスし、メッセージ情報を変数に保存するbashコマンドのようなものが見つかりませんでした。

Admin

カールレスポンスでは、2つの文字列をGrepして同じ行のファイルに出力します。
grep
scripting
regular-expression
curl

カールレスポンスでは、2つの文字列をGrepして同じ行のファイルに出力します。

プロセスを自動化したい。 カール要求に使用するIPアドレスのリストがあります。 curl http://api.geoiplookup.net/?query=($ip) カールの出力から都市を取得し、フォーマットでテキストファイルに1行を書きたいですIP_address:city。 都市を見つけるために、次のものが見つかりました(googleはい)。 curl http://api.geoiplookup.net/?query=216.58.198.206 | grep -oP '(?<=\).*(?=\<\/city\>)' 私が行ったプロセスを自動化するには(しかし改善が必要です^^): for ip in $(cat essai); do curl http://api.geoiplookup.net/?query=$ip & done コマンドを追加しようとすると、grep都市は表示されず、エラーが発生します。 ありがとうございます。

Admin

コマンド出力をパラメータリストとしてスクリプトに渡すにはどうすればよいですか?
bash
scripting
ls
arguments

コマンド出力をパラメータリストとしてスクリプトに渡すにはどうすればよいですか?

現在のディレクトリにあるすべてのファイルの先頭にコンテンツを追加したいと思います。現在の作業ディレクトリからすべてのファイル名を一度に取得し、引数として渡す方法を学ぶ必要があります。各ファイルをスクリプトの引数として手動で指定することで、これを行う必要はありません。私はこの新しい知識を追加のスクリプトに使用したいと思います。私は側面や他の解決策は必要ありません。 command(ls)出力を取得してパラメータに渡す方法を学ぶ必要があります。私はこれを試しましたが失敗しました。 ./file-edit.sh $(ls) ./file-edit.sh `ls` これは私の作業スクリプトです。 #!/bin/bash lineno=2 # Append from line 2 BAD_ARGS=85 # Error code string0="###################################################################" string2="#Description :" string3="#Date :`date +%d-%B-%Y`" string4="#Author :Milos Stojanovic" string5="#Contact: :https://www.linkedin.com/in/xxx/" string6="###################################################################" # Can be any other strings if [ ! -f $1 ]; then echo "Please specify at least 1 filename as an argument!" exit $BAD_ARGS fi until [ -z "$1" ] do string1="#Script Name :$1" file=$1; sed -i ""$lineno"i $string0\n$string1\n$string2\n$string3\n$string4\n$string5\n$string6" $file echo "File "\'$file\'" altered at line number: $lineno" shift 1 done exit 0

Admin

Bash関数内の変数生成の動作
linux
bash
shell-script
shell
scripting

Bash関数内の変数生成の動作

外部スクリプトを強化するために、以下の関数を使用しています。主な目的は、ifconfigおよびpingテスト出力から一部のデータを返すことです。追加の「パイピング」を実行し、他の情報と再接続するために、変数を使用して同じ関数で設定しようとしています。しかし、私はこのような行動をとります。基本的に私がやりたいことは次のとおりです。 > for i in $(ifconfig | grep "inet addr" | tr -s " " | cut -d" " -f 3 | cut -d: -f2) ; do ping -c1 $i | grep packet | a=`echo $i-$(cut -d, -f3)` | echo $a; done 4 4 4 4 ご覧のとおり、各反復は数字4を返します。 変数属性のみを削除すると、最初に変数「a」が設定されていると予想される出力が得られます。 > for i in $(ifconfig | grep "inet addr" | tr -s " " | cut -d" " -f 3 | cut -d: -f2) ; do ping -c1 $i | grep packet | echo $i-$(cut -d, -f3); done 10.0.2.15- 0% packet loss 192.168.0.2- 0% packet loss 10.0.2.100- 0% packet loss 127.0.0.1- 0% packet loss 最初の関数コードの実行で数字4が出力されるのはなぜですか? 同じ関数内で変数を設定し、パイプの後に再エコーする方法は?それは可能ですか? ありがとうございます!

Admin

カールメッセージをurlencodeする方法
scripting
curl

カールメッセージをurlencodeする方法

メッセージをカールすると、私のスクリプトにエラーがあります。 「space」という文字に問題があるようです。スペースをスキップしようとすると、スクリプトが正しく実行されるためです。 これは私のスクリプトです。 #!/bin/env bash hostname="$(hostname)" now="$(date +'%d%h%y_%H.%M.%S')" while IFS= read -r line; do curl -X GET "http://x.x.x.x:5000/submit_fajar.php?msg=\"${line}+$line+$hostname\"" done < <(cat test.txt | strings | awk -F'|' '$4 > 100{print $1 "_" $2 "_" "please check have_many_error respond_from server" "_" $3 "_" "count", $4}') 実行中にエラーが発生しました: + curl -X GET 'http://x.x.x.x:5000/submit_fajar.php?msg="2019-07-20_19:42_please check have_many_error respond_from server_server busy_count 176+2019-07-20_19:42_please check have_many_error respond_from server_server busy_count 176+server"'

400 Bad request

Your browser sent an invalid request. + IFS= + read -r line カールのための私のメッセージをURLエンコードする方法を助けてください。 ありがとうございます。

Admin

BASHスクリプト - 出力を読み取り、値で分割する
bash
scripting
filter

BASHスクリプト - 出力を読み取り、値で分割する

コマンドを実行し、そのコマンドの出力をフィルタリングしてから、その出力の結果を読み取り、指定された要件を満たす部分だけを印刷するBASHスクリプトを作成しようとしています。 たとえば、 出力が次のように表示されるように、元のコマンドの出力を減らしました。 Profile: 1 PsA of Profile 1: 13 PsL of Profile 1: 15 Profile: 2 PsA of Profile 2: 0 PsL of Profile 2: 0 各プロファイルセクションを個別に読み取り、PsAとPsLの値が0より大きいプロファイル番号のみを印刷するBASHスクリプトを作成しようとしています。 わかりやすくするために、出力はプロファイル値のみを必要とするため、この例では1と2は削除されます。 私がやろうとしているので、BASHスクリプトも必要です。 私はこれがすべて初めて完全に立ち往生しています。助けてください! **編集**明確にするためにボラティリティフレームワークを使用しようとしています。現在入手可能な構成ファイルを見ています。正確な出力は次のとおりです。 Profile suggestion (KDBGHeader): WinXPSP3x86 PsActiveProcessHead : 0x8055a158 (31 processes) PsLoadedModuleList : 0x80553fc0 (122 modules) Profile suggestion (KDBGHeader): WinXPSP2x86 PsActiveProcessHead : 0x8055a158 (31 processes) PsLoadedModuleList : 0x80553fc0 (122 modules) 私にとって必要なのは、スクリプトがPsActiveProcessHeadとPsLoadedModuleList(PsAとPsL)、特に見つかったプロセスとモジュールの数を確認し、括弧内に表示されている両方の値が0より大きい場合にプロファイルの提案を印刷することです。 1つのプロフィール提案があり、それ以上である可能性があります。上記のモジュールとプロセス0を含む見つかったプロファイルを出力するには、スクリプトが必要です。 明確ではない元の質問についてお詫び申し上げます。簡単にして答えを調整しようとしましたが、それでも問題が発生しています。すみません! (明らかに、上記は出力形式の例に過ぎず、常に0より大きい数字を持つわけではなく、2つ以上のプロファイル提案があるかもしれません。)

Admin

/etc/passwdのユーザーが別のファイルにあることを確認するコマンド
scripting
command
aix
passwd

/etc/passwdのユーザーが別のファイルにあることを確認するコマンド

/etc/passwdファイルを照会して200未満のすべてのユーザーUIDSを表示し、そのユーザーが/etc/ftpusersと同じファイルにあることを確認することは可能ですか? これまでに、200未満のUIDを持つすべてのユーザーをリストするために次のコマンドを正常に作成しましたが、リストされたユーザーが/ etc / ftpusersファイルにあるかどうかを確認する方法がわかりません。 grep -Ev "^\+" /etc/passwd | awk -F: '($3 < 200) {print $1}' ファイルにユーザーがいない場合は、違いを出力する必要があります。 forステートメントを試してみましたが、正しく動作しません。

Admin

inotifywait - 入れ子になったifステートメントの助けが必要です。
bash
shell-script
scripting
inotify

inotifywait - 入れ子になったifステートメントの助けが必要です。

($WATCHED)/folder フォルダーで新しいファイル (.mkv のみ) を監視しています。何かが表示されたら、ターゲットフォルダ($ DESTINATION)にコピーし、所有権と権限を変更します。 これが私が使用するスクリプトです。 #!/bin/bash WATCHED=/mnt/Watched DESTINATION=/mnt/Destination user=usrid group=grpid perms=755 inotifywait -re CLOSE_WRITE,CREATE,MOVED_TO --format $'%e\t%w%f' -m $WATCHED | while IFS=$'\t' read -r events new do # Detecting and copying new files/folders sleep 5 if [[ -d "$new" ]] then echo "Folder Detected: $new, Copying to Destination folder" cp -r "$new" "$DESTINATION/" elif [[ "$events" =~ CLOSE_WRITE ]] then if [ -f "$new" ] && [ "${new##*.}" == mkv ] then echo "File Detected: $new, Copying to Destination folder" cp -r "$new" "$DESTINATION/" elif [[ -e "$new" ]] then echo "New unknown item '$new'" fi fi echo "Changing ownership and permissions for $DESTINATION" chown -R $user:$group "$DESTINATION" chmod -R $perms "$DESTINATION" echo done このスクリプトについていくつかの質問があります。 フォルダが1つでフォルダに1つのファイルしかない場合は、何らかの理由で所有権/権限の変更が3回実行されます。以下の出力から2番目のインスタンスが分離されていることを確認できます。なぜそんなのか分からない?私はこれに対する私の立場と行動が私が達成しようとしている目標には適していないことを知っています。ターゲットフォルダ全体ではなく、コピーされる新しい個々のファイル/フォルダごとに所有権/権限を付与したいと思います。各新しいファイル/フォルダの所有権/権限を変更する正しい方法はわかりません。どんな指針でも大変感謝いたします。 このスクリプトは、正確で同じディレクトリツリーを使用してフォルダとファイルをディレクトリにコピーするだけでなく、ファイルをターゲットフォルダにコピーします。したがって、ファイルのコピーが2つあります。まず、コピー先フォルダに直接コピーされるのはなぜですか。 これが出力です。 Folder Detected: /mnt/Watched/NewFolder, Copying to the Destination folder Changing ownership and permissions for /mnt/Destination Changing ownership and permissions for /mnt/Destination File Detected: /mnt/Watched/NewFolder/NewFile.mkv, Copying to Destination folder Changing ownership and permissions for /mnt/Destination これが私が望む出力結果です。 Folder Detected: /mnt/Watched/NewFolder, Copying to the Destination folder Changing ownership and permissions for /mnt/Destination/NewFolder File Detected: /mnt/Watched/NewFolder/NewFile.mkv, Copying to Destination folder Changing ownership and permissions for /mnt/Destination/NewFolder/NewFile.mkv ありがとう

Admin