-->

2018/06/23

ネットワーク環境をCLI変更(macOS 10.13.5)

ChNWsettings2

OSXのネットワーク環境の変更について、UNIXライクなifconfig等でなく、OSX由来のコマンド(networksetup,systemsetup,scselect等)を使って変更するメモです
ネットワーク環境の(初期)設定については書かれていません< networksetup等で別途行います

 

===目次==============================

---現在のネットワークサービス/ハードウエアポート/デバイス名等を表示-----
-ハードウエアポート/デバイス名等を表示
-定義したネットワークサービス/ハードウエアポート/デバイス名等の対応を表示
-その簡易表示(定義したネットワークサービス名のみ表示)

---ネットワーク環境関連-----
-ネットワーク環境名のリスト(と現在の環境)を表示
-hogeネットワーク環境に変更

---Bluetooth関連-----
-Bluetoothの状態を表示
-BluetoothをONにする
-BluetoothをOFFにする
-Bluetooth機器のリストを表示(設定済みのもの)
-Bluetooth機器に接続する(UI Script以外でできる??)

---Wi-Fi関連-----
-WiFi(airportの)のON/OFFを表示
-Wi-FI(airportの)をONに
-Wi-FI(airportの)をOFFに
-過去に使ったWi-Fiネットワークを表示
-Wi-FI環境をスキャン
-(特定の)Wi-Fiネットワークに接続
-Wi-Fiネットワーク(airport)の接続解除
-現在接続中のWi-FiネットワークのSSIDを表示
-現在接続中のWi-Fiネットワークの状態を表示(無線LAN情報)
-現在接続中のWi-Fiネットワークの状態を表示(IPネットワーク情報)
-現在の定義したネットワークサービス/ハードウエアポート/デバイス名等の対応を表示
-その簡易表示(定義したネットワークサービス名のみ表示)

-補足


===内容==============================

---現在のネットワークサービス/ハードウエアポート/デバイス名等を表示-----
-ハードウエアポート/デバイス名等を表示
$ networksetup -listallhardwareports

-定義したネットワークサービス/ハードウエアポート/デバイス名等の対応を表示
$ networksetup -listnetworkserviceorder

-その簡易表示(定義したネットワークサービス名のみ表示)
$ networksetup -listallnetworkservices


---ネットワーク環境関連-----
-ネットワークロケーション名のリスト(と現在の設定)を表示
networksetupだと
$ networksetup -listlocations
$ networksetup -getcurrentlocation

scselectだと
$ scselect

-hogeネットワークロケーションに変更
networksetupだと
$ networksetup -switchtolocation hoge

scselectだと
$ scselect hoge


---Bluetooth関連-----
-Bluetoothの状態を表示
$ defaults read /Library/Preferences/com.apple.Bluetooth ControllerPowerState
0: OFF / 1: ON
($ system_profiler -detailLevel full SPBluetoothDataType でもいけるけど)

-BluetoothをONにする
$ sudo defaults write /Library/Preferences/com.apple.Bluetooth ControllerPowerState -int 1
$ sudo killall -HUP bluetoothd

-BluetoothをOFFにする
$ sudo defaults write /Library/Preferences/com.apple.Bluetooth ControllerPowerState -int 0
$ sudo killall -HUP bluetoothd

-Bluetooth機器のリストを表示(設定済みのもの)
$ system_profiler SPBluetoothDataType
(結構メンドウ..)

-Bluetooth機器に接続する(UI Script以外でできる??)
セキュリティとプライバシー の プライバシー タブで制御許可しておいてから..
(Ref: Bluetoothのオン/オフと接続をCLIで
<http://innovate-shoma.blogspot.com/2018/06/bluetoothclimacos-high-sierra.html>)

#/bin/bash
/usr/bin/osascript <<- EOD
tell application "System Events"
   tell process "SystemUIServer"
      tell (menu bar item 1 of menu bar 1 whose description contains "bluetooth")
         click
         tell (menu item "SomeBTName" of menu 1) —Bluetooth名を指定
            click
            click menu item 1 of menu 1 —トグルでON/OFF
         end tell
      end tell
   end tell
end tell
EOD

---Wi-Fi関連-----
(もちろん $ ifconfig 系でもいいけれど:-p)

-Wi-Fi(airportの)のON/OFFを表示
$ networksetup -getairportpower en0

-Wi-FI(airportの)をONに
$ networksetup -setairportpower en0 on

-Wi-FI(airportの)をOFFに
$ networksetup -setairportpower en0 off

-過去に使ったWi-Fiネットワークを表示
$ networksetup -listpreferredwirelessnetworks en0

-Wi-FI環境をスキャン
$ /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -s

-(特定の)Wi-Fiネットワークに接続
SSID:hoge / パスフレーズ:PassPhraseの場合
$ networksetup -setairportnetwork en0 hoge PassPhrase

-Wi-Fiネットワーク(airport)の接続解除
$ sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -z

-現在接続中のWi-FiネットワークのSSIDを表示
$ networksetup -getairportnetwork en0

-現在接続中のWi-Fiネットワークの状態を表示(無線LAN情報)
$ /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I

-現在接続中のWi-Fiネットワークの状態を表示(IPネットワーク情報)
ネットワークサービス名がhogeの場合(下記述 $ networksetup -listallnetworkservicesがhoge)
$ networksetup -getinfo hoge

-現在の定義したネットワークサービス/ハードウエアポート/デバイス名等の対応を表示
$ networksetup -listnetworkserviceorder
-その簡易表示(定義したネットワークサービス名のみ表示)
$ networksetup -listallnetworkservices

 

===補足=================

—例-----


$ networksetup -listallhardwareports Hardware Port: GU-1000T Device: en7 Ethernet Address: 00:90:cc:xx:xx:xx Hardware Port: Apple USB Ethernet Adapter Device: en2 Ethernet Address: 00:1e:c2:xx:xx:xx Hardware Port: iPhone USB Device: en4 Ethernet Address: 6a:db:ca:xx:xx:xx Hardware Port: Wi-Fi Device: en0 Ethernet Address: 28:37:37:xx:xx:xx Hardware Port: Bluetooth PAN Device: en3 Ethernet Address: 28:37:37:xx:xx:xx Hardware Port: Thunderbolt 1 Device: en1 Ethernet Address: b2:00:xx:xx:xx Hardware Port: Thunderbolt Bridge Device: bridge0 Ethernet Address: b2:00:1f:xx:xx:xx VLAN Configurations =================== $ networksetup -listnetworkserviceorder An asterisk (*) denotes that a network service is disabled. (1) Apple_USB_Ethernet (Hardware Port: Apple USB Ethernet Adapter, Device: en2) (2) MR04LN_USB (Hardware Port: LTE Mobile Router, Device: en5) (3) AirCard785S_USB (Hardware Port: AirCard 785S, Device: en6) (4) Wi-Fi (Hardware Port: Wi-Fi, Device: en0) (5) IPhone_USB (Hardware Port: iPhone USB, Device: en4) (6) Bluetooth_PAN (Hardware Port: Bluetooth PAN, Device: en3) (7) Thunderbolt_Bridge (Hardware Port: Thunderbolt Bridge, Device: bridge0) $ networksetup -listallnetworkservices An asterisk (*) denotes that a network service is disabled. Apple_USB_Ethernet MR04LN_USB AirCard785S_USB Wi-Fi IPhone_USB Bluetooth_PAN Thunderbolt_Bridge $ networksetup -listlocations Tether_iPhone_via_USB Automatic AppleUSB-EtherAdt Wi-Fi Tether_AC785_via_USB Tether_via_BT Tether_MR04LN_via_USB $ networksetup -getcurrentlocation Automatic $ networksetup -switchtolocation Automatic found it! $ scselect Defined sets include: (* == current set) A18C9F81-AE73-44BD-B279-E3E6BC5276C6 (Tether_iPhone_via_USB) EF73ECCB-B21A-4CC1-93C9-0549AE85D4BB (Automatic) *C21FA685-2687-4BCB-A3ED-29BA14F167EE (AppleUSB-EtherAdt) 441843F3-0023-42AE-8A12-728811DB63C7 (Wi-Fi) 7A211F45-BB09-4551-8114-8E0A492105B3 (Tether_AC785_via_USB) 02F06DBC-1034-4253-AD31-3C18092C4D14 (Tether_via_BT) F39448D9-7B5D-4778-9B1B-4C8C3DA23AD7 (Tether_MR04LN_via_USB) $ scselect Automatic CurrentSet updated to EF73ECCB-B21A-4CC1-93C9-0549AE85D4BB (Automatic) $ defaults read /Library/Preferences/com.apple.Bluetooth ControllerPowerState 0 $ sudo defaults write /Library/Preferences/com.apple.Bluetooth ControllerPowerState -int 1 $ defaults read /Library/Preferences/com.apple.Bluetooth ControllerPowerState 1 $ sudo killall -HUP bluetoothd $ system_profiler SPBluetoothDataType |grep -B1 -A3 Address Name: MacBook_Air_11 Address: 28-37-37-xx-xx-xx Bluetooth Low Energy Supported: Yes Handoff Supported: No Instant Hot Spot Supported: No -- -- aterm-hogehoge: Address: C0-25-A2-xx-xx-xx Major Type: LAN Access Point Minor Type: LAN Access Point Services: hfp_ag, Generic Access Profile, Dialup Networking, Network service, Generic Attribute Profile -- -- iPhone6s_Plus: Address: 68-DB-CA-xx-xx-xx Major Type: Phone Minor Type: Smartphone Services: Wireless iAP v2, PAN Network Access Profile, Wireless iAP, Handsfree Gateway, Audio Source, AVRCP Device, MAP MAS-iOS, AVRCP Device, Phonebook -- -- JPRiDE-JPA2: Address: E3-28-E9-xx-xx-xx Major Type: Audio Minor Type: Headset Services: CSR GAIA邃「, Hands-Free unit, Headset -- -- TaoTronics TT-BH07: Address: E3-28-E9-xx-xx-xx Major Type: Audio Minor Type: Headset Services: Hands-Free unit, CSR GAIA邃「, Headset -- -- TaoTronicsTT-BH07-CSRGA: Address: E3-28-E9-xx-xx-xx RFCOMM Channel: 1 Requires Authentication: No JPRiDE-JPA2-CSRGAIA: -- -- JPRiDE-JPA2-CSRGAIA: Address: E3-28-E9-xx-xx-xx RFCOMM Channel: 1 Requires Authentication: No iPhone6s_Plus-Wirelessi: -- -- iPhone6s_Plus-Wirelessi: Address: 68-DB-CA-xx-xx-xx RFCOMM Channel: 1 Requires Authentication: No

 

 

—名前対応-----

NWpref

networkservice: ユーザが定義したネットワークサービス名/("AirportExtreame"等)
device name: いわゆるBSD名/インターフェイス名("en0"等)
hardwareport: 論理インターフェイス名(Wi-Fi,Thunderboltブリッジ,PPPoE等)
Location: ユーザが定義したネットワークロケーション名("自宅のネットワーク"etc.)

 

—諸々-----

Airportを利用するネットワークサービスが一つしか定義されていない場合、その(一つの)ネットワークサービスを無効にする>Airportがオフになるみたい
例:
 Wi-Fi_airportという”ネットワークサービス名”のみがAirportを利用 -> Wi-Fi_airportを無効にすると自動的に”Airportもオフ”になる
 複数のネットワークサービスでAirportを利用している場合はそうならない

ネットワークサービス/ハードウエアポート/BSD名は下記にも書かれてる
/Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
/Library/Preferences/SystemConfiguration/preferences.plist

 

諸々のマニュアル(へのURLリンク:-p)

- networksetup

- sytemsetup

- scselect

とりあえず,,,以上

2018/06/14

Bluetoothのオン/オフと接続をCLIで(macOS High Sierra)

BluetoothのOn/OffをCLIでやろうとして、launchd/launchctl*1を普通使う*2と

# sudo launchctl unload /System/Library/LaunchDaemons/com.apple.bluetoothd.plist
/System/Library/LaunchDaemons/com.apple.bluetoothd.plist: Operation not permitted while System Integrity Protection is engaged

と怒られる

このSystem Integrity Protectionは、OS X El Capitan以降にルートユーザでも弄れない領域をつくったもの*3で /System下はこれに当たる

ちなみにその制限領域は

# ls -lO |grep restricted
drwxr-xr-x@  4 root  wheel  restricted         128  1 19 16:34 System
drwxr-xr-x@ 38 root  wheel  restricted,hidden 1216  6  5 05:47 bin
lrwxr-xr-x@  1 root  wheel  restricted,hidden   11  5 25 17:59 etc -> private/etc
drwxr-xr-x@ 63 root  wheel  restricted,hidden 2016  6  5 05:47 sbin
lrwxr-xr-x@  1 root  wheel  restricted,hidden   11  5 25 17:59 tmp -> private/tmp
drwxr-xr-x@ 10 root  wheel  restricted,hidden  320  6  6 16:44 usr
lrwxr-xr-x@  1 root  wheel  restricted,hidden   11  5 25 18:00 var -> private/var

とかで見れる(restricted)

-----

そこでとりあえず、launchdは諦めて(設定ファイル(plist)を書換えてから)プロセス(bluetoothd)再起動で対応することにする

以下でplistファイルを眺めて

# plutil -p /Library/Preferences/com.apple.Bluetooth.plist

それらしいところを探すと,,,

# defaults read /Library/Preferences/com.apple.Bluetooth ControllerPowerState
1

らしいので,,

- OFF>ONなら

# sudo defaults write /Library/Preferences/com.apple.Bluetooth ControllerPowerState -int 1
# sudo killall -HUP bluetoothd

- ON>OFFなら

# sudo defaults write /Library/Preferences/com.apple.Bluetooth ControllerPowerState -int 0
# sudo killall -HUP bluetoothd

で対応できる

-----

ちなみに、Bluetooth機器への接続 は GUI scripting で(メニュー呼出したりして..)しかできなさそう,,,

その場合、呼び出すアプリを システム環境設定>セキュリティとプライバシー の プライバシー タブで制御許可しておいてから

Accessbility

AppleScriptだと...

tell application "System Events"
   tell process "SystemUIServer"
       tell (menu bar item 1 of menu bar 1 whose description contains "bluetooth")
          click
          tell (menu item "SomeBTName" of menu 1) —Bluetooth名を指定
             click
             click menu item 1 of menu 1 —トグルでON/OFF
          end tell
       end tell
    end tell
end tell

とかで、シェルとかシェルスクリプトで呼ぶなら適当に..

#/bin/bash
/usr/bin/osascript <<- EOD
tell application "System Events"
   tell process "SystemUIServer"
       tell (menu bar item 1 of menu bar 1 whose description contains "bluetooth")
          click
          tell (menu item "SomeBTName" of menu 1) —Bluetooth名を指定
             click
             click menu item 1 of menu 1 —トグルでON/OFF
          end tell
       end tell
    end tell
end tell
EOD

とかでいける

——
Bluetoothの挙動がおかしくなったら…Shift+Option+Bluetoothメニューのデバックメニューでリセットを!

Debug Bluetooth

 

Ref.

*1 
-launchd
https://ja.wikipedia.org/wiki/Launchd
https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/Introduction.html#//apple_ref/doc/uid/10000172i-SW1-SW1

*2
ちゃんとlaunchd/launchctlで起動しているのだけどね>Bluetooth
# sudo launchctl list |grep blue
- 0 com.apple.bluetoothReporter
- 0 com.apple.diagnosticextensions.osx.bluetooth.helper
36077 -15 com.apple.bluetoothd
- 0 com.apple.bluetoothaudiod

*3
-Terminalから見た「El Capitan」の変更点(1)
https://news.mynavi.jp/article/osxhack-142/
-El Capitanの「SIP」をもっと知る
https://news.mynavi.jp/article/osxhack-152/

2018/06/12

Kindle本をePub/PDF化(macOS High Sierra)

Kindle2pdf

Kindle本/技術系を読むときに「2冊同時に見れない/開けない」のは面倒!なのでmacOSでePub/PDF化した時の作業ログ

用意するもの

Kindle for Mac(Mac版のKindleリーダー)
Calibre(オープンソースの電子ブックリーダー)
DeDRM_tools(KindleのDRM対策用)

手順

1.CalibreにDeDRM_toolsプラグインを読込む

CalibreのPreferences > ファイルからプラグインを読み込む からDeDRM_plugin.zipを指定するとプラグインとして認識される

DRM plugin

2.CalibreにKindle本を読み込んでPDF/ePubに書き出す

Kindle本の場所はKindleの 設定>一般タブ>コンテンツフォルダー で表示される場所

Path2KIndle

そこにあるHoge.azw(Kindle本)を,calibreにドラッグアンドドロップしてcalibreに追加
本を変換メニュー > 個別に変換 で 出力フォーマットで ePubやPDFを選んで変換
以上

補:
-縦書き文書を横書きにする(対処)方法
縦書き文書の場合,書式崩れて面倒なコトなる場合は,ePubに変換>vertical-rlを削除とか>PDFに書出す..とかで対応
(ePub文書のCSS変更はSigil(View-BookBrouser-stylesheet.css)などで)

Ref.

-Kindle for Mac
<https://www.amazon.co.jp/Amazon-com-Intl-Sales-Inc-Kindle/dp/B011UEIO4S>

-Calibre
<https://calibre-ebook.com/>
<https://manual.calibre-ebook.com/>
<https://github.com/kovidgoyal/calibre>

-DeDRM_tools
<https://github.com/apprenticeharper/DeDRM_tools/>

解説

-DeDRM plugin for calibre: the simplest option for removing DRM from most ebooks(Apprentice Alf’s blog)
<https://apprenticealf.wordpress.com/2012/09/10/calibre-plugins-the-simplest-option-for-removing-most-ebook-drm/>

-DRM Removal Tools for eBooks(Apprentice Alf’s blog)
<https://apprenticealf.wordpress.com/2012/09/10/drm-removal-tools-for-ebooks/>

-Kindle本をGoogle Booksに移動させたときのメモ
<https://qiita.com/mgoldchild/items/165f63bc2e006c81bf58>

-DRMのかかったKindle本(.azw)をPDF化する方法
<http://men3pon.blogspot.com/2018/02/kindlepdf.html>

-【縦書き対応】Kindle本のDRMを解除し、ePubに変換する
<https://webnetforce.net/post-105/>

2018/06/08

FinderのSpotlight検索絡みバク?(macOS High Sierra)

Finder via spotlight2

ファイルシステムをCaseSencitiveにしてない>SpotlightもCaseSencitiveでない>CLIでは破綻しない..
だけど...Finder.app(GUI)だとちょっと変なことになってしまう例^^;

ex.

$ mdfind file.rtf
/Users/hoge/temp/File.rtf

アーカイブの動作設定(macOS Hight Sierra)

Archiver

macOSのクリーンインストール後,Safari等でアーカイブファイルをダウンロードした後で自動解凍しないようにとか,アーカイブ後の動作とかの設定
設定は「Safari」と「Archive Utility」の2箇所

Safariの設定

Safari>環境設定>一般>ダウンロード後安全なファイルを開く

Safari Setting


Archive Utilityの設定

/System/Library/CoreServices/Applications/Archive Utility.app の環境設定

ArchiveUtility Pref

2018/06/01

iTunes 12.7のログイン前後違い(macOS 10.3.4)

iTunesの設定項目は,ログイン*すると増えるのね...

iCloudミュージックライブラリ使いたくて気にしてなかったけれど...

ITS login BATR 001

*システム環境設定>iCloudでなく,iTunesメニュー>アカウント>ログインの方

フォロワー