جریان اینه که میخوام آی پی خارجی شبکه رو داشته باشم. یه راه حل پرسش از سایتای خارج از شبکست. اما روتر شبکه هم حتما این اطلاعات رو داره. مساله فقط اینه که بتونم استخراجش کنم.
خوب آی پی شبکه رو میشه از روی صفحه روتر دید. این آدرس اون صفحست: ۱۹۲.۱۶۸.۱.۲۵۴/status/status_deviceinfo.htm و برای رفتن به اون صفحه هم یوزر (admin) پسورد (۱۲۳۴) میخواد. حالا باید یه جوری به خط فرمان بگم که این صفحه رو بخونه. برای این کار از دستور curl استفاده میکنم:
[bash]
curl -s admin:1234@192.168.1.254/status/status_deviceinfo.htm
[/bash]
سوییچ s میگه مرراحل دریافت نشون داده نشه. خروجی این دستور یه سری کد html اه. بعد باید تو خروجی دنبال IP Address بگردم. چون خود آی پی تو خط بعد از خطی که کلمه IP Address توشه، با سوییچ A1 میم هر جا این بود، خط بعدیش رو هم نمایش بده. تا حالا دستورمون این شده:
[bash]
curl -s admin:1234@192.168.1.254/status/status_deviceinfo.htm | grep ‘IP Address’ -A1
[/bash]
توی خروجی، آی پی تو خط آخره، پس باید خط آخر رو بکشم بیرون:
[bash]
curl -s admin:1234@192.168.1.254/status/status_deviceinfo.htm | grep ‘IP Address’ -A1
| tail -n1
[/bash]
حالا یه خط دارم که آی پی توشه، کد html هم توشه. کد html از کاراکتر > شروع میشه. با دستور کات میگم رشته ورودی رو با اون کاراکتر بشکون و فیلد اول رو برگردون:
[bash]
curl -s admin:1234@192.168.1.254/status/status_deviceinfo.htm | grep ‘IP Address’ -A1
| tail -n1 | cut -d’<' -f1
[/bash]
والسلام. آی پیم رو دارم. با این که از قبل کلا میدونستم این دستورا هستن، بازم اونا رو با سرچ و سعی و خطا کنار هم چیدم. ولی کل فرایند ۱۰ دقیقه بیشتر ازم وقت نگرفت.