اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

ابزار GoTTY برای به اشتراک گذاری ترمینال لینوکس تحت Web

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    ابزار GoTTY برای به اشتراک گذاری ترمینال لینوکس تحت Web

    دستور GoTTY یک ابزار لینوکسی ساده و بر اساس زبان برنامه نویسی GoLang میباشد که برای شما امکان به اشتراک گذاری (share) ترمینال تان (TTY) به عنوان یک اپلیکیشن تحت وب را مهیا میکند.

    این ابزار از شبیه ساز ترمینال OS مرورگر کروم (hterm مخفف Chrome OS’ terminal emulator) برای اجرا کردن یک اسکریپت جاوا بر پایه ترمینال و روی یک مرورگر web استفاده میکند، و نکته مهم اینکه GoTTY یک سرور web socket را راه اندازی میکند که خروجی TTY را برای کلاینت ها انتقال میدهد و از کلاینت ها ورودی دریافت میکند (البته در صورتی که ورودی از کلاینت ها مجاز باشد) و آنرا به TTY فروارد میکند.

    معماری این ابزار (hterm + web socket) از برنامه Wetty نشات گرفته که ترمینال را روی بستر HTTP و HTTPS فعال میکند.


    تجهیزات مورد نیاز

    شما باید در سیستم تان زبان برنامه نویسی GoLang را برای اجرا کردن GoTTY نصب داشته باشید.



    نحوه نصب GoTTY در سیستم های Linux

    اگر شما از قبل زبان برنامه نویسی GoLang را روی سیستم نصب دارید، میتوانید از دستور go get همانند زیر برای نصب ابزار TTY استفاده کنید.
    کد PHP:
    # go get github.com/yudai/gotty 
    دستور بالا باینتری GoTTY را در متغییر محیطی GOBIN سیستم تان نصب خواهد کرد. میتوانید از این مسیر ls بگیرید تا متوجه شوید که آیا GoTTY به درستی نصب شده یا خیر.
    کد PHP:
    # ls $GOPATH/bin/ 



    نحوه استفاده از GoTTY در لینوکس

    برای اجرا کردن این دستور شما میتوانید از متغییر محیطی GOBIN و قابلیت auto completion دستور همانند زیر استفاده کنید.
    کد PHP:
    # $GOBIN/gotty 
    در غیر اینصورت GoTTY یا هر برنامه نوشته شده دیگر با زبان برنامه نویسی Go (همان GoLang) را بدون تایپ کردن مسیر کامل باینری آن را با استفاده از دستور export و اضافه کردن متغییر GOBIN تان به PATH در فایل ~/.profile اجرا کنید.
    کد PHP:
    export PATH="$PATH:$GOBIN
    فایل را ذخیره و از آن خارج شوید سپس به منظور اعمال تغییرات بالا فایل را source کنید.
    کد PHP:
    # source ~/.profile 
    ساختار کلی دستور GoTTY به شرح زیر میباشد.
    کد PHP:
    Usagegotty [options] <Linux command here> [<arguments...>] 
    اکنون GoTTY را با هر دستور دیگری مانند دستور df اجرا کنید و میزان مصرف و فضای پارتیشن های دیسک سیستم را از طریق مرورگر web مشاهده کنید.
    کد PHP:
    # gotty df -h 
    GoTTY یک سرور وب روی پورت پیش فرض 8080 راه اندازی خواهد کرد سپس شما url زیر را روی مرورگر وب خود باز کرده : http://127.0.0.1:8080/ شما دستور در حال اجرای روی ترمینال خود را روی مرورگر web مشاهده میکنید.
    به اشتراک گذاری ترمینال در لینوکس









    نحوه Customize کردن GoTTY در لینوکس

    شما میتوانید آپشن های پیش فرض و همچنین ترمینال تان را (hterm) در فایل profile (فایل ~/.gotty) تغییر دهید، به صورت پیش فرض این دستور فایل ~/.gotty را در صورتی که وجود داشته باشد load میکند.

    این فایل در حقیقت فایل customiz سازی اصلی است که توسط دستور GoTTY خوانده میشود در نتیجه همانند زیر میتوانید آنرا ایجاد کنید.
    کد PHP:
    # touch ~/.gotty 
    و مقدار های صحیح خودتان را برای آپشن های config (تمام گزینه های config را در اینجا میتوانید پیدا کنید) و customize کردن GoTTY تعریف کنید.
    کد PHP:
    // Listen at port 9000 by default
    port "9000"
    // Enable TSL/SSL by default
    enable_tls true
    // hterm preferences
    // Smaller font and a little bit bluer background color
    preferences {
    font_size 5,
    background_color "rgb(16, 16, 32)"

    شما میتوانید فایل index.html خودتان را نیز با استفاده از آپشن --index در ترمینال همانند دستور زیر تعریف کنید.
    کد PHP:
    # gotty --index /path/to/index.html uptime 


    نحوه استفاده از قابلیت های امنیتی در GoTTY

    به دلیل اینکه GoTTY به صورت پیش فرض امنیت معتبری را ارائه نمیدهد شما باید خودتان به صورت دستی از قابلیت های امنیتی خاصی که در زیر شرح داده شده استفاده کنید.



    اجازه دادن به کلاینت ها برای اجرا کردن دستورات یا تایپ کردن input در ترمینال

    دقت کنید که GoTTY به صورت پیش فرض به کلاینت ها اجازه تایپ کردن ورودی (input) در TTY را نمیدهد و تنها قابلیت تغییر سایز پنجره فعال است.

    به هر حال شما میتوانید از آپشن -w یا --permit-write برای اجازه دادن به کلاینت ها به منظور نوشتن در TTY استفاده کنید که البته به دلیل تهدیدهای امنیتی برای سرور توصیه نمیشود.

    دستور زیر از ویرایشگر کامندی vi برای باز کردن فایل linux-zone.txt به منظور ویرایش در مرورگر وب استفاده میکنیم.
    کد PHP:
    # gotty -w vi linux-zone.txt 
    در تصویر زیر شما اینترفیس vi را از طریق مرورگر وب مشاهده میکنید. (در اینجا طبق معمول همیشه از دستور vi استفاده کردیم)
    نصب gotty برای به اشتراک گذاری ترمینال لینوکس









    استفاده از GoTTY به همراه Authentication ابتدایی (یوزر و پسورد)

    سعی کنید که یک مکانیزم اولیه authentication را فعال کنید که کلاینت ها برای متصل شدن به سرور GoTTY نیاز به وارد کردن username و password مشخص داشته باشند.

    دستور زیر دسترسی کلاینت را با استفاده از آپشن -c محدود خواهد کرد به نحوی که از کاربر یوزر و پسورد مشخصی را درخواست میکند. (username: mohammad و password: @1363)
    کد PHP:
    # gotty -w -p "9000" -c "mohammad:@1363" glances 
    شیر کردن ترمینال در لینوکس









    ایجاد URL رندوم در GoTTY

    شیوه دیگر برای محدود کردن دسترسی به سرور با استفاده از آپشن -r میباشد در اینجا GoTTY یک URL رندوم (تصادفی) ایجاد خواهد کرد به طوری که تنها کاربرانی که url را میشناسند میتوانند به سرور دسترسی داشته باشند.

    همچنین از آپشن –title-format “GoTTY – {{ .Command }} ({{ .Hostname }})” برای تعریف عنوان (titel) اینترفیس مرورگرهای وب استفاده میشود و دستور glances برای نمایش وضعیت مانیتورینگ سیستم مورد استفاده قرار میگیرد.
    کد PHP:
    # gotty -r --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances 
    تصویر زیر نتیجه دستور بالا در اینترفیس مرورگر وب میباشد.
    how to share terminal in linux









    استفاده از GoTTY به همراه SSL/TLS

    به دلیل اینکه تمام ارتباطات بین سرور و کلاینت ها به صورت پیش فرض encrypt شده نیستند، زمانیکه شما اطلاعات امنیتی (مانند اطلاعات username و password یا هر گونه اطلاعات دیگری) را از طریق GoTTY ارسال میکنید شما باید از آپشن -t یا --tls استفاده کنید که TLS/SSL را روی session فعال میکند.

    GoTTY به صورت پیش فرض فایل certificate (فایل ~/.gotty.crt) و فایل key (فایل ~/.gotty.key) را فراخوانی میکند. بنابراین کار را با ایجاد یک سرتیفیکیت self-signed و فایل key با استفاده از دستور openssl همانند زیر آغاز میکنیم. (به سوالها به منظور ایجاد فایل های cert و key پاسخ دهید)
    کد PHP:
    # openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ~/.gotty.key -out ~/.gotty.crt 
    سپس از GoTTY به شیوه ای مطمئن به همراه SSL/TLS همانند زیر استفاده کنید.
    کد PHP:
    # gotty -tr --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances 


    به اشتراک گذاشتن ترمینال خود با چندین Client

    شما میتوانید از ابزار terminal multiplexers (یا tmux) برای به اشتراک گذاشتن یک process مجزا با چندین کلاینت استفاده کنید. دستور زیر یک tmux session به نام GoTTY به همراه دستور glances را آغاز خواهد کرد. (از نصب بودن برنامه tmux روی سیستم خود مطمئن شوید)
    کد PHP:
    # gotty tmux new -A -s gotty glances 
    برای خواندن یک فایل کانفیگ متفاوت از آپشن –config “/path/to/file” همانند زیر استفاده میکنیم.
    کد PHP:
    # gotty -tr --config "~/gotty_new_config" --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances 
    برای نمایش ورژن GoTTY دستور زیر را اجرا کنید.
    کد PHP:
    # gotty -v 
    از ریپازیتوری github مربوط به GoTTY بازدید کنید تا مثال های بیشتری از موارد کاربرد آنرا پیدا کنید.


    همچنین توصیه میشود مطالعه کنید :

    ابزار tmux برای به اشتراک گذاری چندین پروسس روی یک پنجره ترمینال

    Terminator 0.97 یک شبیه ساز ترمینال لینوکس برای مدیریت چندین پنجره ترمینال

    دستور screen برای مدیریت و به اشتراک گذاری ترمینال های لینوکس

    ابزار Teleconsole برای به اشتراک گذاشتن ترمینال لینوکس با دوستان تان

    MultiTail - مانیتور همزمان چندین فایل در یک ترمینال لینوکس


    اگر شما تا به حال از این دستور استفاده کردید و با کارکرد اصلی و یا کاربردهای دیگر این دستور آشنا هستید لطفا نظرات و ترفند های مفید خود را با ما به اشتراک بگذارید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 02-07-2021, 02:12 PM.
    Instagram : https://www.instagram.com/iranlinuxforum

    Voip Trainer - Asterisk - Elastix - Agi Programming- NewRock

    Voip Expert :ASTERISK-ELASTIX-NewRock Certified-With Experience of Working With
    Sangoma-Digium-Openvox-Synway-Atcom-Quintum Tenor-Polycom-Yealink-Rtx-Snom
    Cisco Collaboration - CME-CUCM-CUPs-CUC-WEBEX
    LPI ( Fundamental - LPI1 and LPI2 ) - Monitoring: ZABBIX-VOIPMONITOR-NAGIOS - CCNA

    Linkedin Profile : https://www.linkedin.com/in/masuma-vahid-26b17b66/

درباره انجمن منطقه لینوکسی ها

انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

شبکه های اجتماعی
در حال انجام ...
X