{"id":19274330,"url":"https://github.com/linzeyan/ops-cli","last_synced_at":"2025-04-21T22:33:49.848Z","repository":{"id":43597068,"uuid":"511436716","full_name":"linzeyan/ops-cli","owner":"linzeyan","description":"Try to collect useful tools for ops.","archived":false,"fork":false,"pushed_at":"2025-04-12T01:53:36.000Z","size":14714,"stargazers_count":5,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-12T02:26:25.729Z","etag":null,"topics":["cli","command-line","command-line-tool","docker","golang","linux","macos","ops","ops-admin","toolkit","tools","windows"],"latest_commit_sha":null,"homepage":"https://linzeyan.github.io/ops-cli/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/linzeyan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-07-07T08:00:42.000Z","updated_at":"2025-04-12T01:53:39.000Z","dependencies_parsed_at":"2025-04-12T02:26:31.427Z","dependency_job_id":"ce203b4e-19bf-4527-ae00-1258b388c001","html_url":"https://github.com/linzeyan/ops-cli","commit_stats":null,"previous_names":[],"tags_count":94,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linzeyan%2Fops-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linzeyan%2Fops-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linzeyan%2Fops-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linzeyan%2Fops-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linzeyan","download_url":"https://codeload.github.com/linzeyan/ops-cli/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250145594,"owners_count":21382444,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","command-line","command-line-tool","docker","golang","linux","macos","ops","ops-admin","toolkit","tools","windows"],"created_at":"2024-11-09T20:45:50.343Z","updated_at":"2025-04-21T22:33:44.827Z","avatar_url":"https://github.com/linzeyan.png","language":"Go","readme":"# ops-cli\n\n[![https://github.com/linzeyan/ops-cli/actions?query=workflow:test](https://github.com/linzeyan/ops-cli/workflows/test/badge.svg?branch=main)](https://github.com/linzeyan/ops-cli/actions?query=workflow:test)\n[![GitHub Workflow Status](https://github.com/linzeyan/ops-cli/workflows/release/badge.svg?style=flat-square)](https://github.com/linzeyan/ops-cli/actions?query=workflow:release)\n[![Release](https://img.shields.io/github/release/linzeyan/ops-cli.svg?style=flat-square)](https://github.com/linzeyan/ops-cli/releases/latest)\n[![Software License](https://img.shields.io/github/license/linzeyan/ops-cli?style=flat-square)](./LICENSE)\n\nTry to collect useful tools for ops.\n\n## Table of contents\n\n- [Installation](#installation)\n  - [Go Install](#go-install)\n  - [Homebrew](#homebrew)\n- [Upgrade](#upgrade)\n  - [Brew](#brew)\n  - [Others](#others)\n- [Usage](#usage)\n\n## Installation\n\n### Docker\n\n```bash\ndocker pull zeyanlin/ops-cli\n```\n\n### Go Install\n\n```bash\ngo install github.com/linzeyan/ops-cli@latest\n```\n\n### Homebrew\n\n```bash\nbrew tap linzeyan/tools\nbrew install ops-cli\n```\n\n## Upgrade\n\n### Brew\n\n```bash\nbrew upgrade ops-cli\n```\n\n### Others\n\n```bash\nops-cli update\n```\n\n### [Download Page](https://github.com/linzeyan/ops-cli/releases/latest)\n\n## Usage\n\n```bash\nOPS useful tools\n\nUsage:\n  ops-cli\n  ops-cli [command]\n\nIM Commands:\n  discord     Send message to Discord\n  line        Send message to LINE\n  slack       Send message to Slack\n  telegram    Send message to Telegram\n\nNetwork Commands:\n  arping      Discover and probe hosts in a network using the ARP protocol\n  dig         Resolve domain name\n  geoip       Print IP geographic information\n  ip          View interfaces configuration\n  mtr         Combined traceroute and ping\n  netmask     Print IP/Mask pair, list address ranges\n  ping        Send ICMP ECHO_REQUEST packets to network hosts\n  ss          Displays sockets informations\n  tcping      Connect to a port of a host\n  traceroute  Print the route packets trace to network host\n  url         Get url content or expand shorten url or download\n  whois       List domain name information\n  wsping      Connect to a websocket server\n\nAdditional Commands:\n  cert        Check tls cert expiry time\n  completion  Generate the autocompletion script for the specified shell\n  convert     Convert data format, support csv, json, toml, xml, yaml\n  date        Print date time\n  df          Display free disk spaces\n  doc         Generate documentation\n  dos2unix    Convert file eol to unix style\n  encode      Encode and decode string or file\n  encrypt     Encrypt or decrypt\n  free        Display free memory spaces\n  hash        Hash string or file\n  help        Help about any command\n  icp         Check ICP status\n  otp         Calculate passcode or generate secret\n  ps          Display process status\n  qrcode      Read or generate QR Code\n  random      Generate random string\n  readlink    Get symlink information\n  redis       Opens a connection to a Redis server\n  ssh-keygen  Generate SSH keypair\n  ssl         Genreate self-sign certificate\n  stat        Display file informations\n  system      Display system informations\n  tree        Show the contents of the giving directory as a tree\n  update      Update ops-cli to the latest release\n  version     Print version information\n\nFlags:\n      --config string    Specify config path\n      --help             Help for this command\n      --output string    Output format, can be json/yaml\n      --verbose string   Specify log level (debug/info/warn/error/panic/fatal (default \"warn\")\n```\n\n### `arping`\n\n```bash\n→ sudo ops-cli arping 192.168.181.1 -c\nonline\n```\n\n### `cert`\n\n```bash\n→ ops-cli cert www.google.com\n{\n  \"expiryTime\": \"2022-11-07T16:25:22+08:00\",\n  \"days\": 63,\n  \"issuer\": \"CN=GTS CA 1C3,O=Google Trust Services LLC,C=US\",\n  \"serverIp\": \"142.251.42.228:443\",\n  \"dns\": [\n    \"www.google.com\"\n  ]\n}\n```\n\n### `convert`\n\n```bash\n→ ops-cli convert toml2yaml -i .config.reference.toml\n→ cat .config.reference.yaml\ndiscord:\n  channel_id: channelID\n  token: token\nencrypt:\n  key: \"\"\nline:\n  access_token: Channel Access Token\n  id: \"\"\n  secret: Channel Secret\nslack:\n  channel_id: CHANNEL\n  token: token\ntelegram:\n  chat_id: \"12345678\"\n  token: token:token\nwest:\n  account: account\n  api_key: apikey\n```\n\n### `date`\n\n```bash\n→ ops-cli date -s\n1663222044\n\n→ ops-cli date -M\n1663822818051885\n```\n\n```bash\n→ ops-cli date --format '01-02-2006'\n09-15-2022\n```\n\n```bash\n→ ops-cli date --format '2006-01-02' --duration '1900-01-01'\n122y351d8h24m52.034116s\n```\n\n### `df`\n\n```bash\n→ ops-cli df\nFilesystem      Size      Used      Avail     Use%     Mounted on                   FsType  iUsed    iFree       iUse%\n/dev/disk1s1s1  465.63GB  169.81GB  295.82GB  36.47%   /                            apfs    501138   3101858760  0.02%\ndevfs           191.50KB  191.50KB  0.00B     100.00%  /dev                         devfs   664      0           100.00%\n/dev/disk1s5    465.63GB  169.81GB  295.82GB  36.47%   /System/Volumes/VM           apfs    3        3101858760  0.00%\n/dev/disk1s3    465.63GB  169.81GB  295.82GB  36.47%   /System/Volumes/Preboot      apfs    4005     3101858760  0.00%\n/dev/disk1s6    465.63GB  169.81GB  295.82GB  36.47%   /System/Volumes/Update       apfs    493      3101858760  0.00%\n/dev/disk1s2    465.63GB  169.81GB  295.82GB  36.47%   /System/Volumes/Data         apfs    1988242  3101858760  0.06%\nmap auto_home   0.00B     0.00B     0.00B     0.00%    /System/Volumes/Data/home    autofs  0        0           0.00%\n/dev/disk1s1    465.63GB  169.81GB  295.82GB  36.47%   /System/Volumes/Update/mnt1  apfs    502050   3101858760  0.02%\n```\n\n### `dig`\n\n```bash\n→ ops-cli dig @1.1.1.1 tw.yahoo.com CNAME\nNAME            TTL     CLASS   TYPE    RECORD\ntw.yahoo.com.   20      IN      CNAME   fp-ycpi.g03.yahoodns.net.\n```\n\n### `Discord`\n\n```bash\nops-cli Discord text 'hello' --config ~/.config/.myconfig\n```\n\n### `dos2unix`\n\n```bash\n→ ops-cli dos2unix /tmp/abc.com/*\nConverting file /tmp/abc.com/abc.com.crt to Unix format...\nConverting file /tmp/abc.com/abc.com.key to Unix format...\n```\n\n### `encode`\n\n```bash\n→ ops-cli encode base64std 'https://github.com'\naHR0cHM6Ly9naXRodWIuY29t\n→ ops-cli encode base64std -d 'aHR0cHM6Ly9naXRodWIuY29t'\nhttps://github.com\n```\n\n### `encrypt`\n\n```bash\n→ ops-cli encrypt string 'https://github.com' --key '0123456789012345'\nSmNEHlJ1QUw6yLyzcTQ1uibhg4SnTWuOkwo5c4A69JtVgw==\n→ ops-cli encrypt string 'SmNEHlJ1QUw6yLyzcTQ1uibhg4SnTWuOkwo5c4A69JtVgw==' --key '0123456789012345' -d\nhttps://github.com\n```\n\n### `free`\n\n```bash\n→ ops-cli free\n         total     used       free  available    use%\nMem:   16.00GB  10.22GB   838.58MB     5.78GB  63.85%\nSwap:   3.00GB   2.01GB  1012.00MB             67.06%\n```\n\n### `geoip`\n\n```bash\n→ ops-cli geoip 1.1.1.1\n{\n  \"continent\": \"Oceania\",\n  \"country\": \"Australia\",\n  \"countryCode\": \"AU\",\n  \"regionName\": \"Queensland\",\n  \"city\": \"South Brisbane\",\n  \"district\": \"\",\n  \"timezone\": \"Australia/Brisbane\",\n  \"currency\": \"AUD\",\n  \"isp\": \"Cloudflare, Inc\",\n  \"org\": \"APNIC and Cloudflare DNS Resolver project\",\n  \"as\": \"AS13335 Cloudflare, Inc.\",\n  \"asname\": \"CLOUDFLARENET\",\n  \"mobile\": false,\n  \"proxy\": false,\n  \"hosting\": true,\n  \"query\": \"1.1.1.1\"\n}\n```\n\n### `hash`\n\n```bash\n→ ops-cli hash -l main.go\nMD5: 1b48671ec88f2b498820450f802097a6\nSHA1: b2828f7ce1eb4872e5543617f9bf2b7ef28e7c61\nSHA256: 74d680e9a561929551611bcecf9fc1704c75a8491e9aec00065adbfaefa36905\nSHA512: 9aa41fc10c66de39e30dcf7e35be7c15878322df8e318922dc8623f140464c51b964953d950d8dc1ef4b0d4b614f01c065ef50d0c0e686cdd21ff4580fec3ce7\n```\n\n```bash\n→ ops-cli hash sha512 'This is a string.'\n0145c77435b886e43fcfa5b8a6e2c5a9f1c216f694a65e75354f9679174551b7a0151b72f5497d58845bc5033f39f3249ee087cdb602680edc3fdeda8a18ff9b\n```\n\n### `icp`\n\n```bash\n→ ops-cli icp apple.com --config ~/.config/.myconfig\ndomain: apple.com\nicp: 京ICP备10214630号\nicpstatus: 已备案\n```\n\n### `ip`\n\n```bash\n→ ops-cli ip en0\n6: en0: \u003cUP,BROADCAST,MULTICAST\u003e mtu 1500\n        ether 14:7d:da:aa:46:53\n        inet 192.168.181.74/24\n        inet6 fe80::18d6:da54:513a:20e5/64\n        RX packets 62046457  bytes 45060208660 (41.97GB)\n        RX errors 0  dropped 0\n        TX packets 38729722  bytes 26083432718 (24.29GB)\n        TX errors 0  dropped 15935\n```\n\n### `LINE`\n\n```bash\nops-cli LINE text 'hello' --config ~/.config/.myconfig\n```\n\n### `mtr`\n\n```bash\nops-cli mtr 1.1.1.1\n\n                                                Packets               Pings\n Host                                          Loss%   Snt   Last   Avg  Best  Wrst StDev\n\n 1. 192.168.181.1                               0.0%    16    1.9   2.5   1.2  10.0   2.4\n 2. 61.220.168.254                              0.0%    16   12.3   8.4   3.3  13.1   2.7\n 3. 168.95.83.214                               0.0%    16   24.0   6.6   2.5  32.9   8.4\n 4. 220.128.27.94                               0.0%    16    3.6   3.8   2.8   5.3 0.656\n 5. 220.128.25.181                              0.0%    16    4.7   5.6   3.0   8.6   1.5\n 6. 220.128.4.77                                0.0%    16    3.3   3.3   2.7   4.7 0.513\n 7. 210.242.214.45                              0.0%    16    5.8   6.7   4.0  19.7   3.6\n 8. 1.1.1.1                                     0.0%    16    3.0   5.4   3.0  26.6   5.5\n```\n\n### `netmask`\n\n```bash\n→ ops-cli netmask -b 192.168.0.0/16\n11000000 10101000 00000000 00000000 / 11111111 11111111 00000000 00000000\n```\n\n```bash\n→ ops-cli netmask -r 172.16.0.0/12\n172.16.0.0 -\u003e 172.31.255.255 (1048576)\n```\n\n```bash\n→ ops-cli netmask -c 172.16.9.1-192.168.3.1\n172.16.9.1/32\n172.16.9.2/31\n172.16.9.4/30\n172.16.9.8/29\n172.16.9.16/28\n172.16.9.32/27\n172.16.9.64/26\n172.16.9.128/25\n172.16.10.0/23\n172.16.12.0/22\n172.16.16.0/20\n172.16.32.0/19\n172.16.64.0/18\n172.16.128.0/17\n172.17.0.0/16\n172.18.0.0/15\n172.20.0.0/14\n172.24.0.0/13\n172.32.0.0/11\n172.64.0.0/10\n172.128.0.0/9\n173.0.0.0/8\n174.0.0.0/7\n176.0.0.0/4\n192.0.0.0/9\n192.128.0.0/11\n192.160.0.0/13\n192.168.0.0/23\n192.168.2.0/24\n192.168.3.0/31\n```\n\n### `otp`\n\n```bash\n→ ops-cli otp calculate 6BDR T7AT RRCZ V5IS FLOH AHQL YF4Z ORG7\n631843\n```\n\n### `ping`\n\n```bash\n→ sudo ops-cli ping www.google.com -c 2\nPassword:\nPING www.google.com (172.217.163.36): 24 data bytes\n32 bytes from 172.217.163.36: icmp_seq=0 ttl=57 time=3.417797ms\n32 bytes from 172.217.163.36: icmp_seq=1 ttl=57 time=4.2143ms\n\n--- www.google.com ping statistics ---\n2 packets transmitted, 2 packets received, 0.00% packet loss\nround-trip min/avg/max/stddev = 3.417797ms/3.816048ms/4.2143ms/398.251µs\n```\n\n### `qrcode`\n\n```bash\n→ ops-cli qrcode read ~/Downloads/qrcode-two.png\nHTTPS://MAGICLEN.ORG\n```\n\n### `random`\n\n```bash\n→ ops-cli random bootstrap-token\n7fa086.d40039e9efc249ec\n```\n\n```bash\n→ ops-cli random base64 -l 500\nTKxrKqeIoY/FrGI4h2vNnalc0Ga0h3CoKtWVBluWF+Lu4CSF078oUPstVF0CTzBD\nOQdtIGSNUEepInGU0vH4BWw9yo2iHJib9Ti9EAOGJs/caiy7QSQhJ2c5oamHyFu9\na0Li9ULAm+IsaY0od1xN0QDn3uwnGST/1x2dzDPzaHpU53P7IEWtb1Zioirk8VQZ\nZBHd3e/VNye93i0p0FpVxCi1Q+MhdBJzjx8F9f0arT4brHi0TruAgXd3TlYjjl7A\n6F7iL9AfsUshtL2tKCF3EcmPv1UtCm8S7Hh6lYltzXrmCTCqBKI+doNp2/yPioHQ\nIrpMxjepApa4IxMFapm5LSCBI8UrF4avpTi2cnD8wJfj/RAUlf/8VtbirUh8rtot\ntdR715KHaNRXHpMRwmkDWHTpOtlCotBmKUEkQXJ5ZZyWkp7kkC6F6ADIrtcoa/7h\nfR/ivHlj+PtIyB4em5y0Nq2nTuajHRjZbZTC7akTKx070UWH4uNajkP/Eq82E6Kn\nQbqZnLicRpJj60TUiAFuA3ohjqFynoozRUWjmI8ZmBD6J4o+2viDUHTLRCdIuVeV\nGarvm8Mi95i4Zt8ZMjOhcI6W9zzuMb9bJZqBVsl8GYANHo35X2sfR6burD94We7O\nJkiKqH3a33NP9AA2xpVGrcQrBdo=\n```\n\n### `readlink`\n\n```bash\n→ ops-cli readlink /tmp\nprivate/tmp\n```\n\n### `redis`\n\n```bash\n→ ops-cli redis 'set name Joe'\n\"OK\"\n→ ops-cli redis 'get name'\n\"Joe\"\n```\n\n### `Slack`\n\n```bash\nops-cli Slack text 'hello' --config ~/.config/.myconfig\n```\n\n### `ss`\n\n```bash\nops-cli ss\nProto Local Address Foreign Address  State PID/Program name\n  tcp    0.0.0.0:80       0.0.0.0:0 LISTEN         25/nginx\n tcp6         :::80            :::0 LISTEN         25/nginx\n```\n\n### `ssh-keygen`\n\n```bash\n→ ops-cli ssh-keygen --bits 4096 -f /tmp/rsa\n/tmp/rsa generated\n/tmp/rsa.pub generated\n```\n\n### `ssl`\n\n```bash\n→ ops-cli ssl generate\n→ ls\nca.crt     ca.key     root.crt   root.key   server.crt server.key\n```\n\n### `stat`\n\n```bash\n→ ops-cli stat docker.sock\n  File: \"docker.sock\"\n  Size: 36.00B          Blocks: 0       IO Block: 4096  FileType: Symbolic Link\n  Mode: (0755/Lrwxr-xr-x)       Uid: (    0/    root)   Gid: (    1/  daemon)\nDevice: 16777221        Inode: 37003970 Links: 1\nAccess: Wed Aug 10 13:25:51 2022\nModify: Wed Aug 10 13:25:51 2022\nChange: Wed Aug 10 13:25:51 2022\n Birth: Wed Aug 10 13:25:51 2022\n```\n\n### `system`\n\n```bash\n→ ops-cli system cpu\n{\n  \"VendorID\": \"GenuineIntel\",\n  \"ModelName\": \"Intel(R) Core(TM) i5-1038NG7 CPU @ 2.00GHz\",\n  \"Cores\": 4,\n  \"CacheSize\": 256,\n  \"GHz\": 2\n}\n```\n\n### `tcping`\n\n```bash\n→ ops-cli tcping 1.1.1.1 80\ntcp response from 1.1.1.1 (1.1.1.1) port 80 [open] 5.311941ms\n```\n\n### `Telegram`\n\n```bash\nops-cli Telegram text 'hello' --config ~/.config/.myconfig\n```\n\n### `traceroute`\n\n```bash\n→ sudo ops-cli traceroute 1.1.1.1\ntraceroute to 1.1.1.1 (1.1.1.1), 64 hops max, 24 byte packets\n1     192.168.181.1    4.951536ms 2.309237ms 3.206471ms\n2     61.220.168.254   11.807506ms 3.370591ms 15.020509ms\n3     168.95.83.214    10.43289ms 9.700833ms 9.874369ms\n4     220.128.27.94    9.995535ms 4.686122ms 9.784072ms\n5     220.128.25.181   11.213021ms 7.17189ms 11.335182ms\n6     220.128.4.77     9.642501ms 7.084146ms 5.372547ms\n7     210.242.214.45   8.191182ms 4.458661ms 11.622122ms\n8     1.1.1.1          11.124769ms 10.348664ms 3.23984ms\n```\n\n### `tree`\n\n```bash\n→ ops-cli tree cmd/common -gp\ncmd/common\n├── [-rw-r--r-- 20  ]  bytes.go\n├── [-rw-r--r-- 20  ]  common.go\n├── [-rw-r--r-- 20  ]  config.go\n├── [-rw-r--r-- 20  ]  constant.go\n├── [-rw-r--r-- 20  ]  http.go\n├── [-rw-r--r-- 20  ]  printer.go\n├── [-rw-r--r-- 20  ]  qrcode.go\n├── [-rw-r--r-- 20  ]  validator.go\n└── [-rw-r--r-- 20  ]  variable.go\n\n0 directories, 9 files\n```\n\n### `update`\n\n```bash\n→ ops-cli update\nUpdate...\n==\u003e Downloading file from GitHub\nUpgrading ops-cli v0.10.0 -\u003e v0.10.1\n==\u003e Cleanup...\nUpdate completed\n```\n\n### `url`\n\n```bash\n→ ops-cli url -e https://bit.ly/3gk7w5x\nhttps://zh.wikipedia.org/zh-tw/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86#:~:text=%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E5%9C%A8%E9%9B%BB%E8%85%A6,%E4%BC%BA%E6%9C%8D%E5%99%A8%E5%8F%A2%E9%9B%86%E7%9A%84%E5%AD%98%E5%9C%A8%E3%80%82\n```\n\n### `version`\n\n```bash\n→ ops-cli version\nApp        ops-cli\nVersion    v0.8.4\nCommit     e4b96dfeb732a81440969877a6bb5fdef17d5d09\nDate       2022-09-21T01:40:44Z\nRuntime    go1.18.5 darwin/amd64\nCopyright © 2022 ZeYanLin \u003czeyanlin@outlook.com\u003e\nSource available at https://github.com/linzeyan/ops-cli\n→ ops-cli version --output json\n{\n  \"version\": \"v0.8.4\",\n  \"commit\": \"e4b96dfeb732a81440969877a6bb5fdef17d5d09\",\n  \"date\": \"2022-09-21T01:40:44Z\",\n  \"runtime\": \"go1.18.5 darwin/amd64\"\n}\n```\n\n### `whois`\n\n```bash\n→ ops-cli whois apple.com --output json\n{\n  \"registrar\": \"CSC Corporate Domains\",\n  \"createdDate\": \"1987-02-19T13:00:00+08:00\",\n  \"expiresDate\": \"2023-02-20T13:00:00+08:00\",\n  \"updatedDate\": \"2022-02-16T14:15:06+08:00\",\n  \"remainDays\": 168,\n  \"nameServers\": [\n    \"A.NS.APPLE.COM\",\n    \"B.NS.APPLE.COM\",\n    \"C.NS.APPLE.COM\",\n    \"D.NS.APPLE.COM\"\n  ]\n}\n```\n\n```bash\n→ ops-cli whois google.com --expiry\n2028-09-14T12:00:00+08:00\n```\n\n### `wsping`\n\n```bash\n→ ops-cli wsping wss://wss.example.com\nConnect success\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinzeyan%2Fops-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinzeyan%2Fops-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinzeyan%2Fops-cli/lists"}