05-08-2014, 11:50
|
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
|
|
חבר מתאריך: 25.10.01
הודעות: 42,775
|
|
זה קצת מוזר שהתחביר היה קודם תקין ואז התקלקל, לא?
אתה בטוח שזה כתוב בדיוק כמו שזה כתוב למעלה? רווחים בין הסוגריים המרובעים של ה while? נקודה פסיק אחרי?
כי בדקתי שזה רץ לפני שכתבתי לך מה שכתבתי...
בכל מקרה, אני הרצתי את זה משורת הפקודה, ולא מסקריפט (בשביל זה גם כל הנקודה פסיק באמצע)... לא שזה אמור לשנות... אם אתה הופך את זה לסקריפט, אנחנו יכולים לנסות כך (ובדרך להפוך אותו לקצת יותר מקצועי ) :
קוד:
#!/bin/bash
SCRIPT=/home/user/cuckoo/utils/submit.py
WATCHDIR=/home/user/Desktop/filesforscan
echo
if [ ! -d "$WATCHDIR" ]; then
echo "The path to watch, $WATCHDIR, does not seem to be a valid directory! Exiting."
exit 1
fi
echo "Running with effective user id $EUID. Will wait for new files in $WATCHDIR and invoke $SCRIPT on them."
echo
while [ 1 ]; do
WAITOUT=$(inotifywait -e create -e moved_to "$WATCHDIR" 2>/dev/null | cut -d\ -f3-)
echo "New file detected: $WAITOUT. Invoking: python \"$SCRIPT\" \"$WATCHDIR/$WAITOUT\""
python "$SCRIPT" "$WATCHDIR/$WAITOUT"
done
על הדרך גיליתי שגם לי הייתה טעות, לקחתי בטעות את הפלט מהשדה השני במקום מהשדה השלישי, אבל זה לא הגורם לשגיאה שקיבלת... וגם הוספתי קוד כך שלא תהיה חייב להריץ את זה דווקא מתוך הספריה, אלא ניתן נתיב מלא גם לקובץ החדש...
רק לוודא שוב - זה אכן רץ על לינוקס, כן? לא סולאריס, או משהו כזה... אינני יודע אם התחביר של bash זהה בכל המקומות. כמו כן, רצוי שתוודא שאתה אכן משתמש ב bash! ושזה לא symlink ל shell אחר (יש הפצות לינוקס מטומטמות שעושות דברים כאלה... תוכל לדעת על ידי הרצת הפקודה הזו:
)
|