2017-08-13 6 views
0

パスワードをプレーンテキスト(カンマ区切り; passwdはデータベースがエクスポートされたcsvファイルの5番目のフィールド)とし、dokuwikiで後で使用するためにパスワードを暗号化するために古いデータベースを処理します。ここに私のbashコマンドは(グレップとSEDはカール出力から暗号化されたpasswdファイルを抽出することがあります)です。パイプコマンドのcurlとxargs

cat users.csv | awk 'FS="," { print $4 }' | xargs -l bash -c 'curl -s --data-binary "pass1=$0&pass2=$0" "https://sprhost.com/tools/SMD5.php" -o - ' | xargs | grep -o '<tt.*tt>' | sed -e 's/tt//g' | sed -e 's/<[^>]*>//g' 
  • 私はxargsのから次のコメントに

    xargsの取得:比類のない単一引用符を。デフォルトでは、-0オプションを使用しない限り、xargsは特別なものです。

  • ファイルの最初の行だけが処理され、何も追加されません。

-0オプションを使用して引用符で囲んでも、何も解決しません。コマンドラインでどこが間違っていますか?これを行うには、より高度な言語が適切であるかもしれません。助けのための

感謝、LM一般に

答えて

1

、あなたはコマンドのような長いパイプを持っている場合、物事がうまくいかない場合は、それらを分割することをお勧めします。パイプを通る:

cat users.csv | 

そこには何も予期しないことがあります。

awk 'FS="," { print $4 }' | 

あなたはおそらくawk 'BEGIN {FS=","} { print $4 }'をしたかったでしょう。パイプ内の最初の2つのコマンドを試し、正しい答えが得られるかどうかを確認してください。

xargs -l bash -c 'curl -s --data-binary "pass1=$0&pass2=$0" "https://sprhost.com/tools/SMD5.php" -o - ' | 

が何も間違って、MD5ハッシュを行うには良い方法があるかもしれませんが。

xargs | 

xargsはパイプ内で何をしていますか?削除する必要があります。これは2行を生成することを

grep -o '<tt.*tt>' | 

注:

<tt>$1$17ab075e$0VQMuM3cr5CtElvMxrPcE0</tt> 
<tt>&lt;your_docuwiki_root&gt;/conf/users.auth.php</tt> 

あなたが期待したものだろうではありません。

sed 's/<tt>//;s/<.tt>//' 

が同じことをするでしょうけれども、HTMLタグを削除します

sed -e 's/tt//g' | 
sed -e 's/<[^>]*>//g' 

だから私は間違ってawkxargsが多すぎると言います。