//

Sunday, September 30, 2012

3 frequently asked questions about SSH

Open SSH
Hello Everyone,

Welcome to my first post in English (well, you can say its the second one). 

Today I'm gonna talk about three frequently asked questions i get on my job about SSH.

For those of you who dont familiar with the open ssh suite, I recommend you read about it here: http://www.openssh.org/


1. I get "connection refused" via ssh. How to solve this error?

first of all, check if the sshd daemon is running on the remote computer. You can do with following command:

service sshd status

you should get something like: "openssh-daemon is running"
If you getting something different you might found the problem. you can start the service like that:

service sshd start
I recommend you use ssh with the -v option which means "verbose". you will get more information about the command you trying.

try checking the status of ssh ports with:

netstat -tlp | grep ssh
if the iptables is on or any other kind of firewall, that could be anther reason for "connection refused".
you could also try to search the logs for something useful: /var/logs/messages 

2. How to use SSH for remotely executing commands?

Well, this answer is quite simply. for example the following will reboot the remote computer mario

ssh root@mario reboot
I use this kind of commands for checking logs on remote computer. It can be very useful.
Be aware that you might asked for password, which leads us for the next question:


2. How to use SSH without password?

when using ssh for remote actions (connect, command execution) the system will prompt you for password.
you can cancel the prompt and connect without password!.
Its very useful for sysadmins who works quite often on remote servers.

there are few simple steps for it to be done:

1. on the local computer:

ssh-keygen 
Press Enter key for each default option.
This is will create public and private key pair.

2. make sure on the remote computer there is a direcotory named .ssh in the user directory. if not create it

3. next copy the public key to the remote computer:

scp  ~/.ssh/id_rsa.pub  remote_linux:~/.ssh/
4. connect without password to the remote computer! =)

Thats it for this post.
Hope you will find this info helpful.

Happy Sukkot Holiday =)



Thursday, September 27, 2012

10 פקודות Find שפשוט חייבים להכיר

לינוקס זה קבצים. כך תמיד היה. רוב הדברים במערכת שלנו הם קבצים - devices, links, sockets ועוד.
לכן תמצאו את הכלי find כשימושי במיוחד בעבודה שלכם עם מערכת ההפעלה.

בפוסט הזה אני אנסה לתת לכם טעימה קטנה מfind עם 10 דוגמאות שחייבים להכיר =)

lets go

1. שימוש בסיסי

לפני שאננו קופצים למים העמוקים בואו נראה דוגמה בסיסית לשימוש בfind:

find  /  -name "*.txt" 
אז מה בעצם אנחנו רואים כאן?

/ הוא המיקום שממנו אנו רוצים להתחיל. שימוש נפוץ נוסף הוא פשוט לשים נקודה. הכוונה בנקודה היא המקום בו אנו נמצאים עכשיו.

name- אומר שהביטוי הבא הוא חלק מהשם של הקובץ (או השם כולו) שאנו רוצים לחפש.
בדוגמה הזאת השתמשתי בWildCards. הכוונה בכוכבית היא 0 תווים או יותר ולא משנה באיזה תו מדובר.
מה שאנחנו מחפשים כאן זה למעשה את כל הקבצים שמסתיימים בtxt - דרך שימושית למצוא את כל הקבצים מסוג מסויים.


2. זמן רבותיי, זמן

לעיתים קרובות נרצה לדעת אילו קבצים שונו היום, אילו לפני חודש ואולי רק יומיים ומעלה.  את כל אלה ויותר נוכל לבדוק באמצעות find

find /tmp -mtime 2
בדוגמה אנו מחפשים את כל הקבצים ששונו לפני יומיים בדיוק. ניתן להשתמש בסימנים + - כדי לחפש קבצים ותיקיות ששונו לפני יותר מיומיים או פחות מיומיים.

אופציות חשובות נוספות הן:
atime - access time למעשה הזמן שבו נעשה שינוי בקובץ שלא בתוכן שלו.
ctime - change time הזמן שבו השתנו מאפייני הקובץ כמו הרשאות, metadata וכו'


3. הרשאות

find מאפשרת לנו לחפש גם קבצים עם הרשאות מסויימות

find  . -perm 646
בדוגמה הנ"ל אנו מחפשים את כל הקבצים עם הרשאות קריאה וכתיבה לowner ולothers והרשאות קריאה לgroup.

באמצעות not- ניתן למצוא את כל הקבצים שאין להם את ההרשאות הנ"ל.

בנוסף ניתן לחפש בצורה סימבולית. למשל  



find  . -perm -ug=rwx

4. סוג קובץ

לפעמים המטרה שלנו בחיפוש היא לאו דווקא למצוא קובץ רגיל. לעיתים נרצה לחפש תיקיות ובפעמים אחרות block device. לכן חשוב להכיר איך לחפש גם סוגי קבצים אחרים.


find /var -type d 

בדוגמה הנ"ל אנחנו מחפשים את כל התיקיות תחת var/
כדי ללמוד על סוגים נוספים ניתן להסתכל בדפי הman של find


5. חפש ובצע

אחת מהאופציות החזקות (ומהמסוכנות) שיש לfind להציע זאת אופציית הexec
exec מאפשרת לנו לבצע כל פעולה שנרצה על הקבצים שמצאנו בעת החיפוש


find ~ -name *.txt -exec rm -f {} \;
בדוגמה הנ"ל אנו מחפשים את כל הקבצים שמסתיימים בtxt ולאחר מכן מוחקים את אותם קבצים.
זאת דוגמה לשימוש מסוכן בפקודה. אין לדעת מה נעלה בעת החיפוש. לכן יש לשים לב ולנסות לעשות את זה בזהירות. בדוגמה הזאת למשל, הייתי שם i- ולא f-


6. קצת עומק

בברירת מחדל find מחפש בכל תתי התיקיות בנתיב שאנו מציינים.
כדי להגביל את עומק החיפוש ניתן לציין את האפשרות maxdepth


find / -maxdepth 2 -name "mario"
maxdepth 2 פירושו חפש בנתיב שצויין ושלב אחד למטה. כך למשל הוא יחפש גם בתיקייה etc/ אך לא מעבר לכך.
ניתן להתחיל חיפוש גם בעומק מסויים (כלומר לא מהנתיב שצויין) עם האפשרות mindepth


7. חדש יותר

מקודם ציינתי שניתן לחפש לפי זמן מסויים שקובץ נערך או בוצעה גישה אליו. ניתן לבצע חיפוש יותר חכם בהקשר הזה של מודיפקציה של קבצים.


find . -newer file1


הפקודה תחפש בנתיב הנוכחי את כל הקבצים ששונו לאחר זמן השינוי של file1
שימושי במקרה ואתם רוצים לראות את השינויים האחרונים בתיקייה מסויימת.

8. גודל

לפעמים נרצה לאתר את הקבצים הכי גדולים בעץ קבצים שלנו על מנת לפנות כמה שיותר מקום. האופציה size מאוד שימושית במקרה הזה:


find /tmp -size +38k 

כאן אתם יכולים לראות דוגמה לחיפוש של קבצים מעל 38 קילובייט. ניתן לחפש לפי גדלים שונים. M גדולה למשל ייחפש לנו בגדלים של Megabytes

9.   Iname

לינוקס היא case sensitive. כלומר הקובץ file והקובץ File הם קבצים שונים בתכלית.
לא תמיד ברור לנו מה שם הקובץ שאנחנו מחפשים. גם כשאנחנו כבר יודעים איזה קובץ אנחנו מחפשים, לא תמיד נהיה בטוחים איך הוא מאויית (אות גדולה בהתחלה? הכל אותיות קטנות? גדולות?) בשביל זה בדיוק יש את iname


find / -iname data
בדוגמה הנ"ל אנחנו מחפשים את כל הקבצים שנקראים data. זה לא משנה אם הם רשומים כDATA או Data. 
find ימצא אותם בכל מקרה.

10. משתמשים וקבוצות

נניח שמשתמש מסויים עזב את הארגון שלנו ואנחנו רוצים לוודא שכל הקבצים ששייכים לו נמחקו מהאחסון.
find מאפשר לנו לחפש גם לפי שיוך קבצים למשתמש וקבוצה מסויימת.


find /users/doron -uid 500 -group doron

נניח שהuid של doron הוא 500 וגם של הקבוצה ששמה כמו שם המשתמש (doron). בדוגמה אנו מחפשים את כל הקבצים ששייכים למשתמש doron ולקבוצה שלו. find מאפשרת לנו לחפש עם האפשרויות uid וgid, ומצד שני גם מילולית עם user וgroup.

מספר טיפים

לעיתים תתקלו בדברים לא רצויים עם הפקודה find.

אחת מה"תקלות" הנפוצות בעבודה עם find היא חוסר הרשאות למיקום מסויים במערכת שמוציא לנו שגיאות יחד עם הפלט של החיפוש. כדי לסנן את השגיאות הללו מומלץ להשתמש בredirection כך:

find / -name "*.mkv" 2> /dev/null

דבר נוסף שנרצה לעשות לעיתים קרובות הוא לחפש במספר מקומות בו זמנית. כדי לעשות את זה פשוט מפרידים בין המקומות באמצעות רווח.


find /tmp  /var/log  /home/arie -name log

זהו. זה הכל להפעם.
ממליץ לכם לקרוא קצת יותר על find בtdlp או בדפי הman כדי לקבל מושג יותר טוב על מלוא היכולות של הכלי הזה.

שתהיה חופשה נעימה וחג שמח =)




Monday, September 10, 2012

איך להציג מידע על המערכת הפעלה והקרנל

שלום לכולם,

פקודה שתציג לנו מידע על המערכת שבה אנו משתמשים יכולה להיות שימושית מאוד, במיוחד בסביבה בה יש לנו עשרות ולפעמים אף מאות שרתים הנבדלים ביניהם במערכות ההפעלה.

היום אני אראה לכם מספר פקודות שיעזרו לכם לזהות את המערכת הפעלה בה אתם משתמשים.

שימו לב - הפקודות שמתוארות בפוסט נוסו על מערכת ההפעלה red hat. הכלי uname הוא כלי נפוץ שנמצא כמעט בכל מערכת הפעלה לינוקס אחרת שקיימת כיום.

ניגש למלאכה:

גרסת ההפצה של Red Hat

אצלי בעבודה קיימות גרסאות רבות של Red Hat וכיוון שיש הבדל משמעותי ביניהן אני מוצא את עצמי הרבה פעמים משתמש בפקודה הבאה:

cat /etc/redhat-release
פלט לדוגמה:

Red Hat Enterprise Linux Server release 6.2 (Santiago)

שם המחשב שלכם

רוצים לדעת לאיזה מחשב אתם מחוברים עכשיו? הפקודה הבאה (מקבילה לפקודה hostname) תציג לכם את שם המחשב והdomain בו אתם נמצאים:

uname -n
פלט לדוגמה:


localhost.local

הצגת כל המידע

לרוב, לא נרצה לזכור את השימוש של כל אופציה ומה בדיוק היא מציגה.
הדרך הקצרה והיעילה ביותר היא פשוט להציג הכל עם האפשרות a-

uname -a 
פלט לדוגמא:

Linux mario.domain 2.4.12-122.2.1.el6.x86_64 #1 SMP Tue AUG 22 12:26:34 EST 2012 x86_64 x86_64 x86_64 GNU/Linux

מידע על ה-Kernel

כדי למצוא מידע ספציפי על גרסת השחרור של הKernel יש להשתמש באפשרות r-

uname -r
על מנת לראות את כל האפשרויות של הפקודה ממליץ לקרוא את הman שלה:

man uname

 מספר אפשרויות נוספות שאולי יועילו לכם:


uname -p = processor type
uname -o = operating system
uname -i = hardware platform
uname -m = machine hardware name


עד הפעם הבאה =)