それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

nkf で文字コードの判別結果を取り出す

nkf コマンドで文字コードがなになのか調べる

curl http://b.hatena.ne.jp/ | nkf -g
UTF-8

nkf -g

-g オプションで guess の意味がある。g はゲス(勘ぐり)だとでも覚えておけばいいかもしれない。

NKFについては

nkf については以前に使い方をまとめているので、そちらを参考にしてほしい

文字コード変換コマンドの nkfの使い方と実例をまとめました。 - それマグで!

別に記事が古くてもnkf の使い方は変わってないぞ

bashのカレントディレクトリがコマンドとして解釈される問題

謎現象が起きた

カレントディレクトリのファイルがコマンドとして実行されてしまう。

takuya@Desktop$ ./a
aaaaaaaaaaaaaaaaaaaaaa
takuya@Desktop$ a
aaaaaaaaaaaaaaaaaaaaaa

bash で、このような動的に変化するPATHを認めてしまうと思いもよらない動作を引き起こすから、カレントディレクトリ( . ) はPATHから除外されてるはずなんだが。

原因を調べた

アレコレしらべてみたけれど原因がなかなかわからなかった。

PATHに :: が含まているとカレントディレクトリとして解釈されるらしい。しらんかった。

takuya@Desktop$ PATH=/bin:/usr/bin
takuya@Desktop$ a
-bash: a: コマンドが見つかりません
takuya@Desktop$ PATH=/bin:/usr/bin::
takuya@Desktop$ a
aaaaaaaaaaaaaaaaaaaaaa
takuya@Desktop$

なんてこったい。

bashrc で:: がPATHに混じっていた。本当に驚いた。

実験したbash

今回ためしたbashはこれ。

takuya@$ bash --version
GNU bash, バージョン 4.4.19(1)-release (x86_64-apple-darwin15.6.0)
Copyright (C) 2016 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL バージョン 3 またはそれ以降 <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

2018-08-01 追記

バージョン情報を追記

ユーザーのbashrc を読み込まずにクリーン起動する

bash で設定を無効にして起動する。

env -i  bash --noprofile --norc

bash --noprofile --norc だと環境変数が。。

takuya@$ bash --noprofile --norc
bash: takuya_prompt_command: コマンドが見つかりません
bash-4.4$
bash: takuya_prompt_command: コマンドが見つかりません
bash-4.4$

環境変数を綺麗な状態で起動する

env -i bash 

これと、norc を組み合わせると冒頭のコマンドになる。

env -i  bash --noprofile --norc

他には、sudo が env_reset 設定になってることが多いので sudo するとかね

sudo -u takuya  bash --noprofile --norc

参考資料

journalctlで指定のサービス(ユニット)のログを上手に見る方法-期間指定,サービス指定,json

systemd の status の結果で、ログもうちょっと多く見たい

takuya@:mysql$ systemctl  status nginx
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-07-23 13:52:28 JST; 41min ago
     Docs: man:nginx(8)
 Main PID: 15612 (nginx)
    Tasks: 10 (limit: 4915)
   Memory: 26.1M
      CPU: 1.534s
   CGroup: /system.slice/nginx.service
           ├─15612 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           ├─15613 nginx: worker process
           ├─15619 nginx: worker process
           └─15621 nginx: cache manager process

 7月 23 13:52:28 acid systemd[1]: Starting A high performance web server and a reverse proxy server...
 7月 23 13:52:28 acid systemd[1]: Started A high performance web server and a reverse proxy server.
## ここをもっと見たい

status で、末尾に表示されるログは最新のプロセス起動後のログだけなので、過去の再起動時のプロセスもあわせて見たいと思いますよね。

journalctl -u で見れます。

journalctl -u nginx.service

または service を省略しても見られます。

journalctl -u nginx

tailf / tail -f 的なことがやりたい

tailf / tail -f みたいにログをフォローして表示したい

journalctl -f

これが便利。/var/log/ を探さなくていいんです。楽

その他のオプション

今日のログを見たい --since today をつければ見れる。

takuya@:nginx$ journalctl -u nginx  --since today
-- Logs begin at Tue 2018-05-29 01:08:01 JST, end at Mon 2018-07-23 14:36:01 JST. --
 7月 23 13:51:53 acid systemd[1]: Stopping A high performance web server and a reverse proxy server...
 7月 23 13:51:53 acid systemd[1]: Stopped A high performance web server and a reverse proxy server.
 7月 23 13:52:28 acid systemd[1]: Starting A high performance web server and a reverse proxy server...
 7月 23 13:52:28 acid systemd[1]: Started A high performance web server and a reverse proxy server.

date で解釈できるものなら何でも行けそう

journalctl -u nginx  --since 2018-06-01
journalctl -u nginx  --since yesterday 
journalctl -u nginx  --since '3 days ago'
journalctl -u nginx  --since '3 hours ago'

since と until を組み合わせて期間

since と似たようなものに until があります。

since / until と組み合わせて、ログの表示期間を指定することができる。

json でくれ

-o json-pretty をつければ json でみれるぜ

journalctl -u nginx  --since 'today' -o json-pretty
{
        "__CURSOR" : "s=0997617705f94f34ae01266fa219a576;i=550fb9;b=2bf63364741441b1a80057285897e9b8;m=9ae801170e;t=571a3677f43ab;x=294ec4728d5abe08",
        "__REALTIME_TIMESTAMP" : "1532321513554859",
        "__MONOTONIC_TIMESTAMP" : "665317349134",
        "_BOOT_ID" : "2bf63364741441b1a80057285897e9b8",
        "_MACHINE_ID" : "19458862819a493f879c4a7d4730c653",
        "_HOSTNAME" : "acid",
        "PRIORITY" : "6",
        "SYSLOG_FACILITY" : "3",
        "SYSLOG_IDENTIFIER" : "systemd",
        "_UID" : "0",
        "_GID" : "0",
        "_TRANSPORT" : "journal",
        "_CAP_EFFECTIVE" : "3fffffffff",
        "CODE_FILE" : "../src/core/unit.c",
        "CODE_LINE" : "1493",
        "CODE_FUNCTION" : "unit_status_log_starting_stopping_reloading",
        "_PID" : "1",
        "_COMM" : "systemd",
        "_EXE" : "/lib/systemd/systemd",
        "_CMDLINE" : "/sbin/init",
        "_SYSTEMD_CGROUP" : "/init.scope",
        "_SYSTEMD_UNIT" : "init.scope",
        "_SYSTEMD_SLICE" : "-.slice",
        "UNIT" : "nginx.service",
        "MESSAGE_ID" : "de5b426a63be47a7b6ac3eaac82e2f6f",
        "MESSAGE" : "Stopping A high performance web server and a reverse proxy server...",
        "_SOURCE_REALTIME_TIMESTAMP" : "1532321513554828"
}

他のフィルタ方法

その他にも

_PID=8088 として プロセスIDごとで見たり

_UID=108 として UID ごとで見たり

--no-pagerページャーを無効にしたり

でも、これってgrep である程度できるので特に実験はしない。

日付の絞り込みはgrep では苦手な分野なので重宝しそう。

また、grep ができないことや日付以外は jq を使えば条件書けるし工夫次第では便利だと思う。

参考資料

https://www.loggly.com/ultimate-guide/using-journalctl/

systemdのjournalctl で指定のサービスのログを見たいけど見れない(mysql)

mysql のログが見れない。

systemctl コマンドの status でログが見れる。

takuya@:mysql$ systemctl status mysqld.service
● mariadb.service - MariaDB database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
(snif)
      CPU: 717ms
   CGroup: /system.slice/mariadb.service
           └─19015 /usr/sbin/mysqld

 7月 23 14:20:31 acid systemd[1]: Starting MariaDB database server...
 7月 23 14:20:32 acid mysqld[19015]: 2018-07-23 14:20:32 139713357013568 [Note] Using unique option prefix 'key_buffer' is error-prone and can break in the future. Please use the full name 'k
 7月 23 14:20:32 acid mysqld[19015]: 2018-07-23 14:20:32 139713357013568 [Note] /usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) starting as process 19015 ...
 7月 23 14:20:33 acid systemd[1]: Started MariaDB database server.

しかし、journalctl では no entry

no entries と言われる。

takuya@:mysql$ journalctl -u mysqld.service
-- No entries --

は?ふざけんな。 systemd

mariadb で見れる。

30分ほど悩んだ結果。これで見れることがわかる。

takuya@:mysql$ journalctl -u mariadb.service
-- Logs begin at Tue 2018-05-29 01:08:01 JST, end at Mon 2018-07-23 14:32:02 JST. --
 6月 18 16:35:28 acid systemd[1]: Stopping MariaDB database server...
 6月 18 16:35:30 acid systemd[1]: Stopped MariaDB database server.
-- Reboot --
 6月 18 16:58:00 acid systemd[1]: Starting MariaDB database server...
 6月 18 16:58:02 acid mysqld[1733]: 2018-06-18 16:58:02 140132049048128 [Note] Using unique option prefix 'key_buffer' is error-prone and can break in the future. Please use the full name 'ke

systemd 要注意

別名だと見れないのかよ。グループに注意する必要がある。systemd はもうちょっとなんとかならないんですか。。。

php composer intall で github rate Limitと言われたときの対処方法

composer install ができなくて詰んだ

composer instal しようとしたら次のエラーが

Could not fetch ~, please create a GitHub OAuth token to go over the API rate limit

GitHub OAuth token to go over the API rate limit のエラーはfetch の上限に掛かったらしい。

対応;自分のキーを使う。

パーソナルアクセストークンを使うといいんです。→ https://github.com/settings/tokensトークンを確認

ScrenCaptured 2018-07-21 20.04.06

画面でトークンを作ったら、それをcomposer の設定に登録する。

composer にトークンをいれる

composer config -g github-oauth.github.com <your_oauthtoken>

面倒くさいときは、コマンドでトークンを発行

curlトークンを作ったら楽だね。

curl -u '[your github username]' \
-d '{"scopes":["repo"],"note":"token for composer "}' \
https://api.github.com/authorizations

参考資料

公式にドキュメントがあります。

https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens

windows 10 でログオフを楽にキーボードショートカットを割り当てる

Windows 10 でログオフが煩雑になった

Windows 10でログオフやCTRL-ALT-DELで押した画面にキーボードショートカットがなくなった。 いままではシングルキー(ALT系)が割り当てられていたのでキー操作だけでログオフができた

いまはできない

また、Win-Lでロック画面を起動した後に、Wを押せばログイン画面に戻せたのに。 ロック画面でのユーザー切り替えにショートカットがなくなった

マウス持つのめんどくさい。タッチパネルならタッチするだけなのですが、通常のPCモニタに対してタッチパネルなど購入していただけるはずもなく

ログオフコマンドにキーボードショートカットを割り当てる。

f:id:takuya_1st:20180720134553p:plain

やり方は簡単

logoff.exe のショートカットを作ってスタートメニューに登録し、プロパティを開く、ショートカットを登録

登録したショートカットはグローバルショートカットとして動作する

ログオフはコマンドラインから呼び出せる

ログオフってコマンドなんですよ。

f:id:takuya_1st:20180720135130p:plain

ログオフの実体は %systemroot%

sys32 にある logoff.exe がログオフコマンドの本体

f:id:takuya_1st:20180720135050p:plain

ショートカットを作って、そこにグローバルなショートカットを割り当てる。

f:id:takuya_1st:20180720135026p:plain

なんでこんな面倒なことをやってるのか

Win-Lでロックすればいいんだけど。 共有PCなんだからロック画面でも誰も座ってなかったらログインすればいいのに、

「takuyaさん ログイン中ですがパソコン使ってます?」といちいちくそ丁寧に聞いてくるパソコンの大先生がいっぱいるんですよ。

もうね、あほかと。いちいち聞かずにログインしてしまえばいいじゃないか。返事するのもめんどくさい。

共有PCでロック状態で放置してたらログインすればいいじゃん。 ロック画面にユーザーの名前が出るからめんどくさいマイクロソフトが悪い。

めんどくさすぎなのでWin-L以外のパパっとログオフする必要があった。

はぁ、PCの仕組みより、「マナー」っぽいことを自分ルールで増やされるのは困る。

追記

Home editionにはlogoff.exeがなかった

どんなwindowsにもついてるわけではなさそう

ext4 の拡張はマウントしたまで出来た

ext4 のリサイズ

マウントを解除して、、て思ってて、うっかりやらかしたら、そのまま拡張できちゃった。

マウントしたままで出来たわ

takuya@:~$ sudo resize2fs /dev/mapper/spanning--test-spanning--lv
resize2fs 1.43.4 (31-Jan-2017)
Filesystem at /dev/mapper/spanning--test-spanning--lv is mounted on /home/takuya/mnt/spanning; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 4
The filesystem on /dev/mapper/spanning--test-spanning--lv is now 7861248 (4k) blocks long.

takuya@:~$ df /dev/mapper/spanning--test-spanning--lv -h
ファイルシス                            サイズ  使用  残り 使用% マウント位置
/dev/mapper/spanning--test-spanning--lv    30G  1.1G   27G    4% /home/takuya/mnt/spanning
takuya@:~$

まぁほとんどやることはないんだろうけど便利ですよね。

関連

lvm でオンラインリサイズできたのか - それマグで!

MacのSecurity コマンドでキーチェインから読み出したときにパーミッションを聞かれないようにする。

security コマンドでパスワード見るとダイアログが邪魔

sudo security find-generic-password  -a  0000docomo  -w

ダイアログが出てくる。

https://i.gyazo.com/43f43c8debf3fd07dba3006374e0d558.png

キーチェインのダイアログを消す。

該当のキー(パスワード)のエントリにアクセス許可を出せばいい。

ただしiCloudのキーチェインはさわれないのでシステムキーチェインに限る。もしiCloudにしかエントリがなければ、システムキーチェインにコピーする(同期されないけど)

https://i.gyazo.com/195540a92a5c42fc04a3c671b80b5f32.png

これが許可した状態

security コマンドにアクセス許可を与えておくと、次からパスワード確認なく使える。

https://i.gyazo.com/32937e9fede87f2725abc6eaceced675.png

関連資料

Macのsecurity コマンドでキーチェインからwifi のssid のパスワードを取り出す - それマグで!

macのファイルダイアログで隠しフォルダ( /usr, /bin ) を表示するのにキーボードショートカットが便利

キーボードショートカットで隠しをファイル・フォルダを表示

CMD + SHIFT + .

ファイルダイアログからしか不可視フォルダの表示と非表示を切り替えられないのですが。

コマンドから入力して、常に表示するには

defaults write com.apple.finder AppleShowAllFiles No; killall Finder

もとに戻すには

defaults write com.apple.finder AppleShowAllFiles Yes; killall Finder

参考資料

https://ianlunn.co.uk/articles/quickly-showhide-hidden-files-mac-os-x-mavericks/

findコマンドで日付と時刻を指定して最近のファイルを削除する

find コマンドで最近のファイルを削除したい

間違って作っちゃったファイルなどを削除したい。 find コマンドならそれも簡単

find コマンドで今日のファイルを見つける

今日(直近24時間)のファイルを見つける

find var/tmp -type f -daystart  -mtime -1  -exec ls -l {} \;

削除と組み合わせる

find var/tmp -type f -daystart  -mtime -1  -delete {} \;

ここ30分のファイルを一覧する

find /var/cache/nginx/fpm -type f -mmin -30 -exec ls -l {} \;

mmin の m は mitime のm 、なので、 amin: atimecmin:ctime も使える。

ここ30分のファイルを削除する

find /var/cache/nginx/fpm -type f -mmin -30 -delete;

find コマンド便利

ファイルを探すのにとても便利なのに、あまり使われていないと思う。なんでみんな手作業でやっちゃうの?

以前のエントリもみてください

すぐわかるfindコマンドの使い方 - それマグで!

nl で空行(empty line) を表示する

nl コマンドで行番号を空行を含めて表示する

なにもない行を無視してしまうので、空行を含めて行番号表示したいですよね。

オプションをつける

nl -b a

-b, --body-numbering=STYLE のオプションで all の a をつける。

実行サンプル

takuya@webhooks$ cat .env  | nl -b a
     1    APP_NAME=Laravel
     2    APP_ENV=local
     3    APP_KEY=base64:q/pPI5TtWLR7nyYTlFTsoV/fKaFTRNNXuRsaYHa5pWY=
     4    APP_DEBUG=true
     5    APP_LOG_LEVEL=debug
     6    APP_URL=http://localhost
     7
     8    #DB_CONNECTION=mysql
     9    #DB_HOST=127.0.0.1
    10    #DB_PORT=3306
    11    #DB_DATABASE=homestead
    12    #DB_USERNAME=homestead
    13    #DB_PASSWORD=secret
    14
    15    BROADCAST_DRIVER=log
    16    CACHE_DRIVER=file
    17    SESSION_DRIVER=file
    18    SESSION_LIFETIME=120
    19    QUEUE_DRIVER=sync
    20
    21    REDIS_HOST=127.0.0.1
    22    REDIS_PASSWORD=null
    23    REDIS_PORT=6379
    24
    25    MAIL_DRIVER=smtp
    26    MAIL_HOST=smtp.mailtrap.io
    27    MAIL_PORT=2525
    28    MAIL_USERNAME=null
    29    MAIL_PASSWORD=null
    30    MAIL_ENCRYPTION=null
    31
    32    PUSHER_APP_ID=
    33    PUSHER_APP_KEY=
    34    PUSHER_APP_SECRET=
    35    PUSHER_APP_CLUSTER=mt1

参考資料

関連資料

行番号を付けるためだけのコマンド【nl】(順位を表示にもつかえそう) - それマグで!

参考資料

sed で指定行に「挿入」する

sed で指定した行に文字を挿入

sed 使うと、X行目に文字を追加することができます。

sed  -i '3i#Hello' /etc/hosts

これを実行すると、 3行目に、#Hello が挿入されます。

ちゃんと3行目に追加されたのか

nl を組み合わせることで、sed の結果を行数を見ながら確認ができます。

cat file | sed -e 'command' | nl -b a

sed 実験するときのコツ→ cat / nl

cat をあわせて使う。

sed -i でファイルを直接書き換えると、もとに戻すのが面倒くさい。 なので、実験にはオプションでやるか、cat を使う

直接書き換えるときは -i を使う

直接書き換える

sed -i file

書き換え前に試す

sed '10iName' file

または、cat を使う

cat file | sed '10iName'

2019/05/16

カテゴリ整理

Macのsecurity コマンドでキーチェインからwifi のssid のパスワードを取り出す

macssid のパスワードをターミナルからコマンド経由で取り出す。

security コマンドを使うと、無線LANのパスワード(PSK)を平分で取得することができる。

WiFiのキーをSSIDごとに、キーチェインが保存しているので、それを指定して取り出す感じ

コマンド

security find-generic-password -D "AirPort network password"  -a $SSID -g

自分のキーチェインから取り出すのsudo はときに使わない、KeychainAgentからローカルのユーザー認証を聞かれるので自分のMacユーザー名とパスワードをいれる。

パスワードだけがほしい。

パスワードだけがほしいときは、 -w オプションにする

security find-generic-password -D "AirPort network password"  -a $SSID -w

実行例

takuya@Desktop$ security find-generic-password -D "AirPort network password"  -a  0000docomo -g
keychain: "/Library/Keychains/System.keychain"
version: 256
class: "genp"
attributes:
    0x00000007 <blob>="0000docomo"
    0x00000008 <blob>=<NULL>
    "acct"<blob>="0000docomo"
    "cdat"<timedate>=0x32303134303532353039333232305A00  "20140525093220Z\000"
    "crtr"<uint32>=<NULL>
    "cusi"<sint32>=<NULL>
    "desc"<blob>="AirPort network password"
    "gena"<blob>=<NULL>
    "icmt"<blob>=<NULL>
    "invi"<sint32>=<NULL>
    "mdat"<timedate>=0x32303134303532353039333232305A00  "20140525093220Z\000"
    "nega"<sint32>=<NULL>
    "prot"<blob>=<NULL>
    "scrp"<sint32>=<NULL>
    "svce"<blob>="AirPort"
    "type"<uint32>=<NULL>
password: "B35D084737"

ちなみに 0000docomo は日本全体で共通なので公開しても構わないものである。

実はオプションはほとんどなくてもいい。

明示的にSSIDを指定してわかりやすくして上記例を書いたけど。オプションは次のもので十分

sudo security find-generic-password  -a  0000docomo  -w

これで十分。

2018-07-18 追記

オプションについて記述を追加

参考資料

https://apple.stackexchange.com/questions/176119/how-to-access-the-wi-fi-password-through-terminal

関連記事

Macに保存時したWifiパスワードを表示するにはキーチェインアクセス - それマグで!

networksetupコマンドの使い方:ヘルプのみかた

networksetup コマンド

mac には networksetup コマンドという、ネットワークでアレコレするためのコマンドが用意されている。

コマンドでアレコレできるけど、だんだんめんどくさくなって、Xcode立ち上げてAPI叩いちゃうんだけどさ。

networksetup コマンドの気持ちを理解してあげることにした。

バイス(en0) なのか 名前(Wi-Fi) なのか

たとえば、SSIDにつなぐときは次のようにする。

sudo networksetup -setairportnetwork en0  0000docomo shared_key

たとえば、DNSを上書きするには次のようにする

networksetup -setdnsservers Wi-Fi 8.8.8.8

ヘルプを見ると書いてある。

networksetup -setairportpower <device name> <on off>
networksetup -setdnsservers <networkservice> <dns1> [dns2] [...]

ヘルプを見れば書いてあるんだけど、いつもどっちなのか見失う。

<device name> が en0 のようなデバイス<networkservice> がネットワーク名

確認するには

networksetup -listallhardwareports

実行すると、次のようになる。

Hardware Port: Wi-Fi
Device: en0
Ethernet Address: 60:03:xxxxxxxxxx

ここの出力から <networkservice>Hardware Port が対応し、<device name>Device が対応してることがわかる。

無線LANのことは airpot と呼ぶ

無線LANのことは歴史的背景から airport と呼ぶ。Wi-Fiなどのなまえは使わない。

なので無線LAN関連の設定コマンドを見るときは grep で airport してあげればいい。

takuya@my_command$ networksetup -setdnsservers | grep airport
networksetup -getairportnetwork <device name>
networksetup -setairportnetwork <device name> <network> [password]
networksetup -getairportpower <device name>
networksetup -setairportpower <device name> <on off>

プロキシ関連の設定を見たければ

同じように grep で見てあげれば、使い方が出てくる。

takuya@my_command$ networksetup | \grep -P "(?<=networksetup ).+proxy.+"

Usage: networksetup -getwebproxy <networkservice>
Usage: networksetup -setwebproxy <networkservice> <domain> <port number> <authenticated> <username> <password>
Usage: networksetup -setwebproxystate <networkservice> <on off>
Usage: networksetup -getsecurewebproxy <networkservice>
Usage: networksetup -setsecurewebproxy <networkservice> <domain> <port number> <authenticated> <username> <password>
Usage: networksetup -setsecurewebproxystate <networkservice> <on off>
(略
Usage: networksetup -setautoproxyurl <networkservice> <url>
Usage: networksetup -getautoproxyurl <networkservice>
Usage: networksetup -setautoproxystate <networkservice> <on off>

networksetup でできないこと

たとえば、MACアドレスを変更したり、ルーティング・テーブルを変更したりといったことはできない。

man を見ると、次のように書いてある。

NETWORKSETUP(8)           BSD System Manager's Manual          NETWORKSETUP(8)

NAME
     networksetup -- configuration tool for network settings in System Preferences.

man には次の通り、 network settings in System Preferences. つまり、システム環境設定でできることは全てできるってことですね。

6to4 とかあったんですね。。

すべてのオプションはこれ。。。

おおいなぁ。

takuya@my_command$ networksetup
-addDeviceToBond                     -duplicatenetworkservice             -getinfo                             -listVLANs                           -removepreferredwirelessnetwork      -setmanualwithdhcprouter             -setv4off
-addpreferredwirelessnetworkatindex  -enableloginprofile                  -getmacaddress                       -listallhardwareports                -renamenetworkservice                -setmedia                            -setv6LinkLocal
-connectpppoeservice                 -enablesystemprofile                 -getmedia                            -listallnetworkservices              -set6to4automatic                    -setnetworkserviceenabled            -setv6additionalroutes
-create6to4service                   -enableuserprofile                   -getnetworkserviceenabled            -listalluserprofiles                 -set6to4manual                       -setpassiveftp                       -setv6automatic
-createBond                          -export8021xLoginProfiles            -getpassiveftp                       -listdevicesthatsupportVLAN          -setMTU                              -setpppoeaccountname                 -setv6manual
-createVLAN                          -export8021xProfiles                 -getproxyautodiscovery               -listlocations                       -setadditionalroutes                 -setpppoepassword                    -setv6off
-createlocation                      -export8021xSystemProfile            -getproxybypassdomains               -listloginprofiles                   -setairportnetwork                   -setproxyautodiscovery               -setwebproxy
-createnetworkservice                -export8021xUserProfiles             -getsearchdomains                    -listnetworkserviceorder             -setairportpower                     -setproxybypassdomains               -setwebproxystate
-createpppoeservice                  -getMTU                              -getsecurewebproxy                   -listpppoeservices                   -setbootp                            -setsearchdomains                    -showBondStatus
-deleteBond                          -getadditionalroutes                 -getsocksfirewallproxy               -listpreferredwirelessnetworks       -setcomputername                     -setsecurewebproxy                   -showpppoestatus
-deleteVLAN                          -getairportnetwork                   -getstreamingproxy                   -listvalidMTUrange                   -setdhcp                             -setsecurewebproxystate              -switchtolocation
-deletelocation                      -getairportpower                     -getv6additionalroutes               -listvalidmedia                      -setdnsservers                       -setsocksfirewallproxy               -version
-deleteloginprofile                  -getcomputername                     -getwebproxy                         -ordernetworkservices                -setftpproxy                         -setsocksfirewallproxystate
-deletepppoeservice                  -getcurrentlocation                  -help                                -printcommands                       -setftpproxystate                    -setstreamingproxy
-deleteuserprofile                   -getdnsservers                       -import8021xProfiles                 -removeDeviceFromBond                -setgopherproxy                      -setstreamingproxystate
-detectnewhardware                   -getftpproxy                         -isBondSupported                     -removeallpreferredwirelessnetworks  -setgopherproxystate                 -settlsidentityonsystemprofile
-disconnectpppoeservice              -getgopherproxy                      -listBonds                           -removenetworkservice                -setmanual                           -settlsidentityonuserprofile

参考資料

man networksetup