# مرجع خط فرمان

`sqctl` راهی است که با آن SecurQbit را از ترمینال هدایت می‌کنید. از راه یک سوکت محلی با سرویس پس‌زمینه حرف می‌زند؛ هیچ اطلاعات ورودی نگه نمی‌دارد و به دسترسی ویژه‌ای نیاز ندارد. اگر هنوز نصبش نکرده‌اید، از [راه‌اندازی روی رایانه و روتر](/cli-installation) شروع کنید.

هر دستور گزینهٔ `--json` را می‌پذیرد که به‌جای خروجی آراسته، سند خام را چاپ می‌کند. همان است که باید برایش اسکریپت بنویسید — چیدمان خواندنی برای انسان ممکن است تغییر کند.

## در یک نگاه

```text
sqctl status                        VPN روشن است یا نه، و با چه حسابی
sqctl login                         ورود با تأیید یک پیوند در مرورگر
sqctl logout
sqctl locations                     کشورهایی که این اشتراک اجازه می‌دهد
sqctl connect [COUNTRY] [--fastest]
sqctl disconnect
sqctl set                           نمایش ترجیحات
sqctl set country DE|any
sqctl set autoconnect on|off
sqctl set updates on|off
sqctl update [--check] [--yes]      نصب آخرین نسخه
```

## sqctl status

نشان می‌دهد محافظت شده‌اید یا نه، و با چه حسابی.

```text
$ sqctl status

  ● Connected      Germany
    Connected for  12m 40s
    Transferred    ↓ 148 MB   ↑ 22 MB

    Account        Alice  alice@example.com
    Plan           Monthly
    Renews         1 September 2026
```

عمداً هیچ‌چیز دربارهٔ چگونگی ساخت تونل نشان نمی‌دهد — نه نشانی سرور و نه شناسهٔ نشست. با هیچ‌کدام کاری از شما برنمی‌آید، و به‌ویژه نشانی سرور چیزی نیست که هنگام درخواست کمک در یک تصویر صفحه بیرون برود.

اگر سرویس در حال اجرا نباشد، `sqctl` همین را می‌گوید و دستوری را چاپ می‌کند که آن را روی *این* دستگاه اجرا می‌کند، هر سامانهٔ راه‌اندازی که داشته باشد.

## sqctl login

این رایانه را با تأیید در مرورگر وارد حساب می‌کند.

```text
$ sqctl login

Open this link to approve the sign-in:

    https://accounts.securqbit.com/device?code=BCDF-GHJK

Check the page shows this code:

    B C D F - G H J K

Waiting for approval — expires in 10 minutes, Ctrl-C to cancel
```

پیوند را باز کنید — `sqctl` تلاش می‌کند خودش آن را باز کند و `--no-browser` جلوی این کار را می‌گیرد — اگر هنوز وارد نشده‌اید وارد شوید، **بررسی کنید کدی که در صفحه آمده با کد ترمینال شما یکی باشد** و تأیید کنید. هرگز چیزی در ترمینال بازنویسی نمی‌شود.

همین مقایسه، تمامِ امنیت این روند است.

> **فقط درخواستی را تأیید کنید که خودتان آغاز کرده‌اید.** اگر کسی چنین پیوندی برایتان بفرستد و شما تأیید کنید، *رایانهٔ او* را وارد *حساب خودتان* کرده‌اید. کد و نام دستگاهی که صفحه نشان می‌دهد دقیقاً برای همین است که بتوانید تفاوت را ببینید.

ورود نیازمند حسابی است که از پیش وجود داشته باشد. یکی را در [برنامهٔ iOS یا Android](/installation) بسازید — از جمله [حساب مهمان](/anonymous-accounts) که با کد بازیابی وارد accounts.securqbit.com می‌شود و مانند بقیه از همان‌جا تأیید می‌کند.

## sqctl logout

VPN را خاموش می‌کند و این رایانه را از حساب خارج می‌کند. تونل نخست پایین می‌آید و این عمدی است: رها کردن تونل روی اطلاعات ورودی‌ای که همین حالا باطل شده‌اند، ترافیک شما را در نشستی جا می‌گذارد که سرور به‌زودی پاکش می‌کند.

برای [حساب مهمان](/anonymous-accounts) نخست تأیید گرفته می‌شود، چون بدون کد بازیابی دیگر نمی‌توانید وارد شوید. گزینهٔ `--force` این پرسش را رد می‌کند.

## sqctl connect

```bash
sqctl connect            # ترجیح ذخیره‌شدهٔ شما
sqctl connect DE         # دیده‌شدن از آلمان
sqctl connect --fastest  # انتخاب با SecurQbit
```

کشور یک کد دوحرفی است — برای دیدن آنچه اشتراک شما اجازه می‌دهد `sqctl locations` را اجرا کنید. اتصال چند ثانیه طول می‌کشد؛ ترمینال به‌جای سکوت، وضعیت واقعی را در حین تغییر دنبال می‌کند.

> **اشتراک آزمایشی نمی‌تواند کشور انتخاب کند.** با اشتراک آزمایشی از `--fastest` استفاده کنید. نام بردن یک کشور خطایی برمی‌گرداند که می‌گوید اشتراک پولی لازم است، به‌جای آنکه بی‌سروصدا شما را جای دیگری وصل کند. به [حساب و صورت‌حساب](/account-billing) نگاه کنید.

## sqctl disconnect

تونل را پایین می‌آورد و مسیریابی و DNS شما را به حالت پیشین برمی‌گرداند.

قطع کردن، در ضمن، همان چیزی است که به SecurQbit می‌گوید *بایست*. اگر تونل خودش بیفتد، سرویس برای بازگرداندنش تلاش را ادامه می‌دهد — و این همان چیزی است که از لپ‌تاپی که از خواب بیدار شده یا روتری که خطش نوسان داشته انتظار دارید. تنها `sqctl disconnect`، خروج از حساب، یا خاموش کردن سرویس این خواست را لغو می‌کند.

## sqctl locations

کشورهایی را که اشتراک شما اجازه می‌دهد با نام فهرست می‌کند.

```text
$ sqctl locations

    DE             Germany
    FR             France
    NL             Netherlands
    SG             Singapore
    US             United States
```

## sqctl set

ترجیحات شما را نشان می‌دهد یا تغییر می‌دهد. سه‌تا هستند، و همان سه‌تایی‌اند که واقعاً انتخابشان با شماست.

```bash
sqctl set                    # نمایش هر سه
sqctl set country DE         # پیش‌فرض آلمان
sqctl set country any        # پیش‌فرض سریع‌ترین
sqctl set autoconnect on     # اتصال به‌محض روشن شدن دستگاه
sqctl set updates off        # پایان جست‌وجوی نسخه‌های تازه
```

```text
$ sqctl set

    Location       Germany (DE)
    Auto-connect   on
    Updates        on
```

باقی چیزها دربارهٔ تونل — چگونه ساخته می‌شود، چه DNSای به کار می‌برد، چگونه دوباره تلاش می‌کند — برای شما تصمیم گرفته شده و از خط فرمان در دسترس نیست. اینها انتخاب‌هایی نیستند که عرضه‌شان یک VPN را بهتر کند.

`updates` یک تنظیم است و نه یک ثابت، چون این بررسی تماسی دوره‌ای با CDN‏ SecurQbit است و کسی که VPN اجرا می‌کند حق دارد آن را نخواهد.

## sqctl update

آخرین نسخه را نصب می‌کند.

```bash
sqctl update            # پرسیدن، سپس نصب و راه‌اندازی دوباره
sqctl update --check    # فقط بگوید نسخهٔ تازه‌ای هست یا نه
sqctl update --yes      # بدون پرسش
```

```text
$ sqctl update

  ! Update available

    Installed      v1.0.0
    Latest         v1.1.0

  SecurQbit restarts to finish, so the VPN disconnects for a moment.

Install it now? [y/N]
```

پیش از جایگزینی هر چیزی، فایل دانلودشده با چکیده‌های منتشرشده مقایسه می‌شود و سپس سرویس روی نسخهٔ تازه دوباره راه می‌افتد. `sqctl` منتظر بازگشتش می‌ماند و نسخه را از خودش می‌خواند، پس آنچه به شما گفته می‌شود همان چیزی است که واقعاً اجرا می‌شود، نه آنچه روی دیسک نوشته شده.

SecurQbit روزی یک‌بار هم خودش بررسی می‌کند و فقط به شما اطلاع می‌دهد — سطری زیر `sqctl status`:

```text
    Update         v1.1.0 available — run: sqctl update
```

هرگز خودش نصب نمی‌کند. کامل کردن به‌روزرسانی یعنی راه‌اندازی دوباره، و راه‌اندازی دوباره تونل برقرار را قطع می‌کند؛ انجام این کار بدون خبر بدتر از آن است که کسی یک نسخه عقب بماند.

اگر SecurQbit را بستهٔ توزیع شما نصب کرده باشد، `sqctl update` پیش از دانلود هر چیزی امتناع می‌کند و می‌گوید آن را به همان روشی که نصب کرده‌اید به‌روز کنید.

## نوشتن اسکریپت

`--json` روی هر دستور، سند پروتکل را چاپ می‌کند:

```bash
$ sqctl status --json | jq '.state, .country'
"connected"
"DE"
```

```bash
# وصل شوید و مطمئن شوید که واقعاً کار کرده است
sqctl connect --fastest --json > /dev/null
test "$(sqctl status --json | jq -r .state)" = connected
```

کدهای خروج: `0` موفقیت، `1` شکست دستور، `2` سرویس SecurQbit در دسترس نیست.

## وقتی چیزی درست نیست

`sqctl` خطاها را به چیزی ترجمه می‌کند که بتوانید بر پایه‌اش کاری بکنید و جزئیات درونی را کنار می‌گذارد. وقتی به آن جزئیات نیاز دارید — برای گزارش یک ایراد — یک دستور عیب‌یابی پنهان هست:

```bash
sqctl debug          # نسخه‌ها، جای هر چیز، اینکه کدام سوکت پاسخ داد،
                     # موتور تونل، و آخرین خطای خام
sqctl debug probe DE # آزمودن یک سرور از سر تا ته، بدون اتصال
```

`sqctl debug probe` از همه کاربردی‌تر است. پروکسی را به یک سرور واقعی وصل می‌کند، یک درخواست از میان آن می‌فرستد و نشانی‌ای را که سوی دیگر دیده گزارش می‌دهد — اما هیچ دستگاه تونلی نمی‌سازد و هیچ مسیری را تغییر نمی‌دهد، پس به شما می‌گوید مسیر کار می‌کند یا نه، بی‌آنکه در صورت کار نکردن اینترنتتان را بگیرد.

هنگام گزارش مشکل، خروجی `sqctl debug` را همراه کنید. به [عیب‌یابی](/troubleshooting) نگاه کنید.

## گام‌های بعدی

- [راه‌اندازی روی رایانه و روتر](/cli-installation) — نصب، به‌روزرسانی و حذف.
- [اتصال به سرور](/connecting) — انتخاب سرور چگونه کار می‌کند.
- [عبور از فایروال و مبهم‌سازی](/firewall-bypass) — در شبکه‌های محدودشده.
