לשרשר ולספור
הזכרנו בעבר ששימוש ב pipe מתסיר את הקוד יציאה של הפקודה שרצה לפני הpipe
לדוגמה הפקודה הבאה תחזיר קוד יציאה 0 למרות שהפקודה הראשונה נכשלה
#pipe
#env_variable
#exit_code
@bash_tips
PIPESTATUS
רמת קושי: #beginners הזכרנו בעבר ששימוש ב pipe מתסיר את הקוד יציאה של הפקודה שרצה לפני הpipe
לדוגמה הפקודה הבאה תחזיר קוד יציאה 0 למרות שהפקודה הראשונה נכשלה
$ ls /not/exist/path | echo 123בכדי לקבל את הקוד יציאה של כל פקודה שהורצה ב pipe ניתן להשתמש במשתנה הסביבה PIPESTATUS, מדובר על משתנה סביבה מסוג מערך שמכיל קוד יציאה של כל פקודה שהורצה ב pipe
123
ls: cannot access '/not/exist/path': No such file or directory
$ echo $?
0
$ ls /not/exist/path | echo 123 | grep -o 2ניתן לראות אם כן שבעוד ששני הפקודות האחרונות יצאו בקוד 0, הפקודה הראשונה שנכשלה יצאה בקוד שגיאה
ls: cannot access '/not/exist/path': No such file or directory
2
$ declare -p PIPESTATUS
declare -a PIPESTATUS=([0]="2" [1]="0" [2]="0")
#pipe
#env_variable
#exit_code
@bash_tips
👍4🔥3
אוטומציה ל
רמת קושי: #advanced
לא מעט פעמים אנו נדרשים לעבוד עם
נשמע מקסים, איפה הבעיה?
הבעיה בכל הסיפור הזה היא ששורת הפקודה שאנו מקבלים היא אינטרקטיבית וזה דיי לא נוח להקליד פעם אחר פעם את הפקודות ל
הראשונה היא על ידי כלי אוטומציה של באש בשם
האופציה השניה היא על ידי העברת ערכים ל stdin של
כפי שניתן לראות הקוד משתמש ב sleep כדי לצלוח את המשימה, מאחר וכל הקוד מגיע כבלוק אחד של טקסט נדרש לשירות זמן להגיב לפקודות אותם הוא קיבל
#telnet
#scripting
@bash_tips
telnet
רמת קושי: #advanced
לא מעט פעמים אנו נדרשים לעבוד עם
telnet
בדרך כלל בשביל לדבג שירות TCP כזה או אחר, לדוגמה ניקח שרת מיילים שאנו רוצים לדבג$ telnet localhost 25התחברנו לשרת ה SMTP דרך telnet ומשלב זה שורת הפקודה (עדין
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 My Mail Server
telnet
) ממתינה שנשלח פקודות לשירות אליו התחברנו, במקרה שלנו פקודות לשירות SMTP עד שנעביר את הפקודה quit
שתסגור את החיבור.נשמע מקסים, איפה הבעיה?
הבעיה בכל הסיפור הזה היא ששורת הפקודה שאנו מקבלים היא אינטרקטיבית וזה דיי לא נוח להקליד פעם אחר פעם את הפקודות ל
telnet
, לכן הדבר אליו אנו שואפים הוא לעשות אוטומציה או לכתוב סקריפט שיריץ את התוכן בשבילנו ב telnet
יש 2 דרכים עיקריים לביצוע אוטומציה ל telnet
הראשונה היא על ידי כלי אוטומציה של באש בשם
expect
עליו לא נדבר היום האופציה השניה היא על ידי העברת ערכים ל stdin של
telnet
echo "ehlo test" | telnet localhost 25להלן דוגמה לסקריפט ששולח מייל על ידי
telnet
{בדוגמה אנו משתמשים ביכולת group command של באש כדי לחסוך כתיבה של תווי \n שנדרשים ל
echo "ehlo test"
sleep 1
echo "mail from:meir@any.domain"
echo "rcpt to:fpk1ezqg@my.domain"
echo "data"
sleep 1
echo "subject: bla bla bla"
echo "more bla bla bla"
echo "."
sleep 1
echo "quit"
} | telnet localhost 25
telnet
.כפי שניתן לראות הקוד משתמש ב sleep כדי לצלוח את המשימה, מאחר וכל הקוד מגיע כבלוק אחד של טקסט נדרש לשירות זמן להגיב לפקודות אותם הוא קיבל
#telnet
#scripting
@bash_tips
👍14
לעשות פיל מזבוב
לא מעט פעמים אנו רוצים לראות איך כלי מסויים מתנהג או איך מערכת מתנהגת במקרה של דיסק מלא, ישנן לא מעט אפשרויות כדי ליצור קבצים גדולים שינפחו את המערכת.
כלי קטן וחביב ממש בשם
#fallocate
@bash_tips
fallocate
רמת קושי: #advancedלא מעט פעמים אנו רוצים לראות איך כלי מסויים מתנהג או איך מערכת מתנהגת במקרה של דיסק מלא, ישנן לא מעט אפשרויות כדי ליצור קבצים גדולים שינפחו את המערכת.
כלי קטן וחביב ממש בשם
fallocate
מאפשר ליצור קבצים בגודל ספציפי, ובמקום לכתוב אליו מידע אמיתי מה שייקח זמן, הכלי רק מסמן בלוקים בדיסק "כתפוסים" ולכן הוא מצליח "ליצור" קבצים ענקיים בפחות משניה.$ fallocate -l 500G fill_half_disk.imgבכדי ליצור קובץ בגודל מסויים אנו משתמשים בדגל -l ומעבירים לו ערך בפורמט K M G וכו' כש 50G הם בעצם 50 ג'יגה בייט
$ du -h fill_half_disk.img#disk
500.1G fill_half_disk.img
#fallocate
@bash_tips
👍9🔥3
לסדר ולהשוות כמו בן אדם
פקודות sort היא מהפקודות השימושיות ביותר
הפקודה מקבלת מספר שורות ומסדרת אותם כך שהפלט יוצג מהערך הקטן לערך הגדול
שימוש בסיסי בפקודה
פילטור בשפה של בני אדם
לפלטר לפי מספרים או אותיות זה קל, מה קורה אם רוצים לפלטר מידע שמבוסס על נפח של קובץ / מקום?
בדומה לפקודות אחרות שימוש בדגל -h יאפשר לפלטר תוכן שמבוסס על נפח כמו K M G T P וכו' (aka human-readable)
לדגמה הפקודה הבאה תציג את רשימת הקבצים כשהקבצים בעלי המשקל הנמוך ביותר יהיו ראשונים והכבדים ביותר יהיו אחרונים.
במידה והפלט אותו אנו רוצים לפלטר הוא טבלה אבל אנו רוצים לפלטר רק לפי עמודה מסויימת נוכל להריץ את הפקודה עם דגל -k ומספר העמודה לפיה נרצה לפלטר
כי כרגע ניתן ליצור פונקציית השוואה לפי משקל קובץ, מבלי להמיר את הערכים למספרים אלא פשוט להשוות 3M < 9G, אכן לא ככה כותבים קוד אבל היי, זה עובד.
#sort
#human_readable
@bash_tips
sort
רמת קושי: #beginners פקודות sort היא מהפקודות השימושיות ביותר
הפקודה מקבלת מספר שורות ומסדרת אותם כך שהפלט יוצג מהערך הקטן לערך הגדול
שימוש בסיסי בפקודה
$ {
echo 2
echo 3
echo 0
} | sort
והפלט 0
2
3
להלן 2 דברים חביבים ממש שהפקודה מאפשרתפילטור בשפה של בני אדם
לפלטר לפי מספרים או אותיות זה קל, מה קורה אם רוצים לפלטר מידע שמבוסס על נפח של קובץ / מקום?
בדומה לפקודות אחרות שימוש בדגל -h יאפשר לפלטר תוכן שמבוסס על נפח כמו K M G T P וכו' (aka human-readable)
לדגמה הפקודה הבאה תציג את רשימת הקבצים כשהקבצים בעלי המשקל הנמוך ביותר יהיו ראשונים והכבדים ביותר יהיו אחרונים.
$ du -h | sort -h
פילטור לפי עמודותבמידה והפלט אותו אנו רוצים לפלטר הוא טבלה אבל אנו רוצים לפלטר רק לפי עמודה מסויימת נוכל להריץ את הפקודה עם דגל -k ומספר העמודה לפיה נרצה לפלטר
$ df -h | sort -hk2
לצורך הדוגמה הסרתי את שאר הטבלה אך כעת ניתן לראות שהתוכן של פקודת df יוצג לנו מפולטר על פי העמודה השניה היא עמודת SizeSize
497M
2.7G
14G
86G
200G
למה זה חביב ממש?כי כרגע ניתן ליצור פונקציית השוואה לפי משקל קובץ, מבלי להמיר את הערכים למספרים אלא פשוט להשוות 3M < 9G, אכן לא ככה כותבים קוד אבל היי, זה עובד.
#sort
#human_readable
@bash_tips
🔥11👍4
Bash Tips
לקבל את כל הפרמטרים עם *! בעבר כתבתי על שימוש ב $! כדי להעביר את הפרמטר האחרון שהשתמשתי בו בפקודה מסוימת לפקודה חדשה. הבעיה מתחילה כשיש רשימה של פרמטרים במידה ונריץ $! נקבל רק את הפרמטר האחרון ולא את כל רשימת הקבצים שהזנו $ touch app.js index.html internal.css…
לזכור
רמת קושי: #beginners
כדי שיהיה קל לזכור את הקיצורים שבאש מספקת לאיחזור ארגומנטים מהפקודה האחרונה, אפשר לחשוב על זה ממש כמו regex
^ - בוחר את הערך ההתחלתי
$ - בוחר את הערך הסופי
* - בוחר את הכל
לדוגמה
@bash_tips
רמת קושי: #beginners
כדי שיהיה קל לזכור את הקיצורים שבאש מספקת לאיחזור ארגומנטים מהפקודה האחרונה, אפשר לחשוב על זה ממש כמו regex
^ - בוחר את הערך ההתחלתי
$ - בוחר את הערך הסופי
* - בוחר את הכל
לדוגמה
$ echo aaa bbb ccc
aaa bbb ccc
$ echo !^
aaa
$ echo !$
ccc
$ echo !*
aaa bbb ccc
#hints@bash_tips
👍13🔥1
ניקיון
כפי שאנו רגילים באש שומר בהיסטוריה כל פקודה שאנו מריצים, בעבר ראינו איך מריצים פקודה מבלי שהיא תיכנס להיסטוריה, מה עושים כאשר הפקודה שהרצנו כן נכנסה להיסטוריה?
בשביל לנקות את כל ההיסטוריה של באש ישנן 2 דרכים
echo >| ~/.bash_history
או פשוט
history -c
בכדי להסיר שורות ספציפיות ניתן להריץ את פקודת history עם דגל -d
history -d 1988
או אפילו להסיר טווח של פקודות מההיסטוריה
history -d 1988-1999
אחלה עובד נהדר
מה בקשר למחיקת היסטוריה לפי פקודה?
אז זהו אין דבר כזה, אלא אם כן אתם רוצים לשרשר כמוני
שיוט! מחקתי את ההיסטוריה
#history
@bash_tips
history
רמת קושי: #beginners כפי שאנו רגילים באש שומר בהיסטוריה כל פקודה שאנו מריצים, בעבר ראינו איך מריצים פקודה מבלי שהיא תיכנס להיסטוריה, מה עושים כאשר הפקודה שהרצנו כן נכנסה להיסטוריה?
בשביל לנקות את כל ההיסטוריה של באש ישנן 2 דרכים
echo >| ~/.bash_history
או פשוט
history -c
בכדי להסיר שורות ספציפיות ניתן להריץ את פקודת history עם דגל -d
history -d 1988
או אפילו להסיר טווח של פקודות מההיסטוריה
history -d 1988-1999
אחלה עובד נהדר
מה בקשר למחיקת היסטוריה לפי פקודה?
אז זהו אין דבר כזה, אלא אם כן אתם רוצים לשרשר כמוני
שיוט! מחקתי את ההיסטוריה
#history
@bash_tips
👍11🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
לנהל ssh
רמת קושי: #beginners
כמעט לכולנו יצא לעבוד עם ssh להתחבר ולהריץ פקודות ממכונה אחת לאחרת
בכדי להגדיר חיבורים רק למשתמש ניתן להוסיף את הערך הבא לקובץ
למשתמשי vscode ישנו תוסף מעולה שמנהל התחברויות ssh ומתבסס על קובץ הconfig המדובר
#ssh
#vscode
@bash_tips
רמת קושי: #beginners
כמעט לכולנו יצא לעבוד עם ssh להתחבר ולהריץ פקודות ממכונה אחת לאחרת
$ ssh user@hostמה שלא כולם יודעים זה שאפשר לשמור ולנהל התחברויות על ידי שימוש בקובץ config, ניתן אפילו לתת להן שמות והגדרות ספציפיות לכל התחברות.
$ ssh user@host "cat /etc/nginx/nginx.conf"
בכדי להגדיר חיבורים רק למשתמש ניתן להוסיף את הערך הבא לקובץ
~/.ssh/config
, בכדי להוסיף הגדרות לכלל משתמשי המערכת ניתן לערוך את הקובץ /etc/ssh/ssh_config
או להוסיף קובץ הגדרות תחת הנתיב /etc/ssh/ssh_config.d/
$ cat ~/.ssh/configלצורך הדוגמה כך נראה קובץ ההגדרות שלנו, הגדרנו 2 מכונות ונתנו שם לכל מכונה, כעת כל פעם שנרצה להתחבר למכונה מסויימת נצטרך רק לקרוא בשמה
Host smtp-prod
HostName 10.248.13.216
User ec2-user
Host smtp-test
HostName 10.247.13.215
User ec2-user
$ ssh smtp-prodנוכל להרחיב את סט ההגדרות ולהגדיר key ספציפי לכל התחברות, או אפילו להגדיר התחברות למכונה דרך מכונה אחרת (Jumpbox)
למשתמשי vscode ישנו תוסף מעולה שמנהל התחברויות ssh ומתבסס על קובץ הconfig המדובר
#ssh
#vscode
@bash_tips
🔥9👍8
ליצור היסטוריה
רמת קושי: #beginners
לא מעט פעמים נדרש מאיתנו לבצע פעולות על קבצים ישנים, הבעיה היא שאי אפשר לבדוק את הכלים שלנו על קבצים ישנים מאחר והתאריך של הקובץ עשוי להשתנות או חמור יותר להרוס את הקובץ
מה שאנו צריכים זה כלי שיאפשר לנו ליצור קובץ כאילו הקובץ נוצר כבר לפני שבוע ועליו לבצע את הניסיונות והפעולות שלנו
פקודת touch מאפשרת לנו ליצור קבצים
ומאפשרת לנו בנוסף לשנות זמן יצירה של קובץ מסויים או ליצור אותו מלכתחילה עם תאריך אחר מהזמן הנוכחי
כפי שניתן לראות זמן היצירה של הקובץ הוא מ01.01.2022
אחלה מעולה הכל עובד מושלם בקשר לקבצים, מה בקשר לתיקיות?
גם כאן פקודת touch באה לעזרנו למרות שהיא עובדת בעיקר על קבצים, אם ניצור תיקייה ו"ניגע" בה עם פקודת touch נוכל לשנות לה את
תאריך היצירה של התיקיה
ה mtime (התאריך האחרון בו הקובץ השתנה)
או ה atime (התאריך האחרון שמישהו ניגש לקובץ)
#touch
@bash_tips
touch
רמת קושי: #beginners
לא מעט פעמים נדרש מאיתנו לבצע פעולות על קבצים ישנים, הבעיה היא שאי אפשר לבדוק את הכלים שלנו על קבצים ישנים מאחר והתאריך של הקובץ עשוי להשתנות או חמור יותר להרוס את הקובץ
מה שאנו צריכים זה כלי שיאפשר לנו ליצור קובץ כאילו הקובץ נוצר כבר לפני שבוע ועליו לבצע את הניסיונות והפעולות שלנו
פקודת touch מאפשרת לנו ליצור קבצים
$ touch newfile
ומאפשרת לנו בנוסף לשנות זמן יצירה של קובץ מסויים או ליצור אותו מלכתחילה עם תאריך אחר מהזמן הנוכחי
$ touch newfile -t 01012022
$ ls -la
...
-rw-rw-r-- 1 bash_tips bash_tips 0 Jan 1 2022
כפי שניתן לראות זמן היצירה של הקובץ הוא מ01.01.2022
אחלה מעולה הכל עובד מושלם בקשר לקבצים, מה בקשר לתיקיות?
גם כאן פקודת touch באה לעזרנו למרות שהיא עובדת בעיקר על קבצים, אם ניצור תיקייה ו"ניגע" בה עם פקודת touch נוכל לשנות לה את
תאריך היצירה של התיקיה
ה mtime (התאריך האחרון בו הקובץ השתנה)
או ה atime (התאריך האחרון שמישהו ניגש לקובץ)
$ mkdir newdir
$ ls -l
...
drwxrwxr-x 2 bash_tips bash_tips 4096 Oct 31 21:11 newdir
$ touch newdir -t 01012022
$ ls -l
...
drwxrwxr-x 2 bash_tips bash_tips 4096 Jan 1 2022 newdir
#touch
@bash_tips
👍8🔥2
Forwarded from ToCode
# היום למדתי: הפקודה fc תאפשר לכם לערוך היסטוריה ולהריץ אותה שוב
זה אולי לא קורה לעתים קרובות, אבל לפעמים יש לנו פקודה או כמה פקודות מההיסטוריה שאנחנו רוצים להריץ שוב ושוב, ובזה בדיוק fc יכולה לעזור.
בשימוש הפשוט שלה הפקודה יודעת למצוא פקודות ישנות שהרצתם. לכן אם אני מפעיל:
אז אני יכול אחרי זה לכתוב:
ולקבל את רשימת כל הפקודות מ mkdir עד cp כולל:
מה שיותר מדליק קורה אם אני מוותר על ה
שומר ויוצא וכך יצרתי את תיקיית bar בדיוק כמו שיצרתי קודם את תיקיית foo.
שימו לב רק שאתם בודקים טוב טוב מה אתם מריצים כשאתם בתוך העורך, כי מרגע ש fc יצא לדרך אי אפשר לעצור אותו וזה שפקודה מסוימת הופיעה בהיסטוריה לא בהכרח אומר שאתם רוצים להריץ אותה שוב.
זה אולי לא קורה לעתים קרובות, אבל לפעמים יש לנו פקודה או כמה פקודות מההיסטוריה שאנחנו רוצים להריץ שוב ושוב, ובזה בדיוק fc יכולה לעזור.
בשימוש הפשוט שלה הפקודה יודעת למצוא פקודות ישנות שהרצתם. לכן אם אני מפעיל:
mkdir foo
touch foo/bar
cp /etc/passwd foo
אז אני יכול אחרי זה לכתוב:
fc -l mkdir cp
ולקבל את רשימת כל הפקודות מ mkdir עד cp כולל:
544 mkdir foo
545 touch foo/bar
546 cp /etc/passwd foo
מה שיותר מדליק קורה אם אני מוותר על ה
-l
, ואז fc פותח את הרשימה בתוך עורך טקסט, מאפשר לי לשנות את הפקודות ובסוף מריץ את כולן. בדוגמה שלנו אני מוותר על ה -l
ומקבל את כל הרשימה בעורך טקסט, משנה כל מופע של foo ל bar ומקבל את הקובץ:mkdir bar
touch bar/bar
cp /etc/passwd bar
שומר ויוצא וכך יצרתי את תיקיית bar בדיוק כמו שיצרתי קודם את תיקיית foo.
שימו לב רק שאתם בודקים טוב טוב מה אתם מריצים כשאתם בתוך העורך, כי מרגע ש fc יצא לדרך אי אפשר לעצור אותו וזה שפקודה מסוימת הופיעה בהיסטוריה לא בהכרח אומר שאתם רוצים להריץ אותה שוב.
👍18
Forwarded from ToCode
# יצירת סיסמאות משורת הפקודה עם pwgen
אחד הכפתורים שהכי אהבתי ב lastpass ודי חסר לי ב 1Password היה כפתור Generate Password. נכון, גם 1Password מג'נרט אוטומטית סיסמאות בטפסי רישום לאתרים, אבל הרבה פעמים בבדיקות אני צריך סיסמה אקראית שלא תישמר בכספת הסיסמאות. וכאן pwgen יכולה לעזור.
בהפעלה רגילה pwgen מדפיסה המון סיסמאות אקראיות למסך:
אם הפלט אינו tty אז תיוצר רק סיסמה אחת, וכמו עם
יש מתגים שמאפשרים להפוך את הסיסמאות ליותר בטוחות, למשל המתג
חוץ מיצירת סיסמאות אפשר להשתמש ב pwgen כדי ליצור בעצם כל מחרוזת שאתם צריכים לבדיקות. לדוגמה אם אתם צריכים 10 כתובות אימייל שנראות אקראיות תוכלו לכתוב:
או הסקריפט הקצר הבא שמדפיס 10 משתמשים אקראיים ל JSON כאשר כל משתמש מקבל מזהה, שם ואימייל אקראיים:
אחד הכפתורים שהכי אהבתי ב lastpass ודי חסר לי ב 1Password היה כפתור Generate Password. נכון, גם 1Password מג'נרט אוטומטית סיסמאות בטפסי רישום לאתרים, אבל הרבה פעמים בבדיקות אני צריך סיסמה אקראית שלא תישמר בכספת הסיסמאות. וכאן pwgen יכולה לעזור.
בהפעלה רגילה pwgen מדפיסה המון סיסמאות אקראיות למסך:
$ pwgen
cahhoh2G oofah7Wo Kain5pha eeKue9th Shieng9i ail5Mai3 ahgh1Woh uuQuu2oh
IVahg0ro Ahju2tah Zuox3laS ual3Iece Ohx7ua2e ib2riyoG UuYie9Oh eicuc7Ib
loh5ja7T Nen9biTh Zee5vaiw ies6AoBo eGheip3m eiyeeNg9 Aish1ohn eM6isees
oR7Zeam4 ithang7O Aing4hah eeNae6Ro ahRashi2 xo2eiVie Eew4ohp8 uusaeCh0
chaic0Vu eu2phaeJ oFee7ei8 zohBu4xe mu9iTeik oow0Ia7e Noothah5 yuuph2Ie
keiFair2 Chutoh1i ji9Quei5 OoX5Ophe yay3AeNo Ahoong3C keeS5Eih Ohbaivi4
pheiPh1A aaloof4B ahsoMai6 they7Xoo IeN1aiqu eoGhai7e ahLaqu9u EiGh3ook
kooCh3ah niGieb7E Chohpai9 uibi2Lah Aiqueiz9 the7ua1T fooS2Ohl Cha9aene
aeT9ahzi teeG8axa the9Wahy WooT0eis tieW5yoh aiYeip1l eTh0iewu azucew3A
oofoKu6h Wievei4c xoo0Quae Lah7Nue0 ieZ8ahqu Oi1ahjee OoW6eeZ3 yei1fi7A
ohb9phuN Gee5see4 eeD5jaik Figha4oo Jet2uo6e Eir9re3i OhDohk9e Yai8ahsu
Ahjaev2i ea8ohJ0e yeiHai4i Cev4Wuuh sheih9Hi akeiZa8t Aic3ahro zoo2AeCa
Ohgoong0 Bouhoo5a wai7Eih0 ZooP7eif ba5eiy3R eewooCh7 Aga2ueZ1 aiT8Shah
Aethee0h Eir9cieg Wo6zoodi iV6idohv Iezei7am chaeR5uf Ooree0ie aequa5Wi
Eeyu8uiF aibac7Li fee4Ahpe HooGo1ei pahng4Ah ohXuo9tu Eeseew0u aefes4Ph
Ea8ohnie kiyaiTh9 Lai9eifu aib4eeSa ua8aaM2o Tied3tee Lo5sooVo Ieshaiw4
pe3Aib4j HiujeeX2 teiJu0Ni geeSh7hi ieNg4oov Ua9ma1oC ahpieC9k Peit0Eih
ab9Raelo jahC6eix QuahG6to aeL7iera ze5OP9Ie uoBai7ob MohK8Ohm Ahr2eemi
loh8iGhu Iu3ahwie uDa4ia8j Quoh4iek aQu6ith0 Ahs5jaiy uech4aiS eodai7Ah
kei4Noox quooy0Ae ohnais7A jeech9Ae ob8ehaeN die4Ahth Ahg8jah3 Aishe8Yi
אם הפלט אינו tty אז תיוצר רק סיסמה אחת, וכמו עם
ls
גם פה אפשר להעביר -1
כדי לקבל את אותה התנהגות:$ pwgen | cat
zo3gi3Ie
$ pwgen -1
shaiPoo2
יש מתגים שמאפשרים להפוך את הסיסמאות ליותר בטוחות, למשל המתג
-y
שמוסיף תווים מיוחדים ו -s
שהופך את הסיסמה ליותר מסובכת לבני אדם. ואפשר גם לצרף מספר בסוף כדי לספר כמה תווים אתם רוצים:$ pwgen -s -1 -y 30
bPcAig)mVL|\_hMpib|f.=?7$o^RQ|
חוץ מיצירת סיסמאות אפשר להשתמש ב pwgen כדי ליצור בעצם כל מחרוזת שאתם צריכים לבדיקות. לדוגמה אם אתם צריכים 10 כתובות אימייל שנראות אקראיות תוכלו לכתוב:
$ pwgen 10 10 | sed 's/$/@test.com/'
ige6Eiji3i@test.com
joiC9kaes0@test.com
EiZuwofu3z@test.com
nee6Ea0eid@test.com
iye7ieJ4oh@test.com
abaeReeP4y@test.com
ebei4NiQu6@test.com
OCheil6ahr@test.com
ootheiH3tu@test.com
ei8ne6ohMi@test.com
או הסקריפט הקצר הבא שמדפיס 10 משתמשים אקראיים ל JSON כאשר כל משתמש מקבל מזהה, שם ואימייל אקראיים:
echo "["
for i in {1..10}; do
id=$(pwgen -1 10)
name=$(pwgen -s 2 1)
email="${name:l}.${id}@example.com"
if [ $i -eq 10 ]; then
echo "{\"id\":\"$id\",\"name\":\"$name\",\"email\":\"$email\"}"
else
echo "{\"id\":\"$id\",\"name\":\"$name\",\"email\":\"$email\"},"
fi
done
echo "]"
👍16🔥4👏1