2017-06-24 5 views
1

私はbashが初めてで、悪意のあるファイルをチェックするスクリプトを作成しようとしています。具体的には、グローバルPHP変数を使用してコンテンツを非表示にします。以下は、このようなファイルの例行です:私はそれを印刷しecho $evalときリモートサーバのBash forループ

eval=$(ssh -q -t -o GSSAPIAuthentication=yes [email protected]$webs "/usr/bin/ssuu $domain" << EOF 
grep -l -r --include=*.php -PHn "(eval\(.*\);)" . 
exit 
EOF 
) 

$GLOBALS['qahtm46']($zadoh31) < 12) { $GLOBALS['wlcrh95']($i34, $gxfej87); 

私はチェックして、リモートから結果を取得する必要があるが、ここで私は現在、その他の情報を接続し、フェッチ方法です一致するファイル名すばらしいです!

私が直接サーバー上で以下のコマンドを実行するたびに:

for x in $(find public_html -type f -name '*.php' | xargs grep -ol 'GLOBALS'); do grep -o 'GLOBALS' $x | wc -l | tr '\n' ' ' ; echo $x; printf "\n"; sleep 1; done 
exit 
EOF 
) 

私は正しい出力を得る:

1 public_html/update.php 
363 public_html/sites/all/themes/corporate_blue/images/proxy2.php 
363 public_html/sites/all/themes/corporate_blue/images/proxy.php 
2 public_html/sites/all/modules/views/views.api.php 
2 public_html/sites/all/modules/imce/tpl/imce-page.tpl.php 
1 public_html/sites/all/modules/ckeditor/includes/filemanager.config.php 
4 public_html/modules/simpletest/drupal_web_test_case.php 

私は私の通常の方法を使用して、これを実行したときしかし、私はすべての出力を得ることはありませんファイルに出力するとファイルが作成されますが、何も書き込まれません。

globals=$(ssh -q -t -o GSSAPIAuthentication=yes [email protected]$webs "/usr/bin/ssuu $domain" << EOF 
for x in $(find public_html -type f -name '*.php' | xargs grep -ol 'GLOBALS'); do grep -o 'GLOBALS' $x | wc -l | tr '\n' ' ' ; echo $x; printf "\n"; sleep 1; done 
exit 
EOF 
) 

問題を参照してください?

答えて

0

あなたはこの実行すると:

ssh server << EOF 
for x in $(find ...); ... 
EOF 

ここでは、文書の内容をサーバにスクリプトを渡す前に、地元のシェルで評価します。 サーバ上で評価するには、開きを二重引用符で囲みますEOF

ssh server << "EOF" 
for x in $(find ...); ... 
EOF 
関連する問題