カテゴリー別アーカイブ: Mac

コマンドによる簡易タイマー

applescriptを用いたシェルスクリプト

timer.sh

#!/bin/sh                                                                                        
osascript << EOF
tell application "Finder" 
activate
display alarm ("test")
end tell
EOF

$sleep 600;./timer.sh
で10分後にメッセージが表示される。

デスクワークで10分置きに想起して記憶術に用いたり、
断続的に目の休憩を取るのを忘れないなど、
使い勝手は非常に良い。

OSXのターミナルにてメール送信

[環境]
OSX10.8.5
postfix mail_version=2.9.2

1. /etc/postfix/にて sasl_passwordというファイルを作成(名前は何でもいい)
xxx.xxx.xxx.xxx:xxx hostID:password
※SMTPサーバーのアドレス:ポート ホストID:パスワード
2. sudo postmap sasl_password を実行
->sasl_password.dbというファイルが作成される。元のsasl_passwordは削除する。
3. sudo vim main.cfに以下を追加
#基本的にtelnetでSMTPサーバーへ接続してメール送信ができれば、その要求通りに設定する
myhostname = hostname #<-SMTPサーバーがホストを要求している場合
relayhost = xxx.xxx.xxx.xxx:xxx #<-SMTPサーバー名またはIP:ポート

#SASL Authentication
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain

#TLS Settings
smtp_use_tls = yes
smtp_tls_security_level = encrypt
tls_random_source = dev:/dev/urandom

4. postfixの起動及び再読み込み
sudo postfix start 及び sudo postfix reload

5. テストメール送信
echo “test” | mail -s “test” xxx@xxx.xxx.xxx.xxx

5′. メール送信が失敗するとローカルに返信があるので、mailで受信内容を確認

6. 日本語のメールはnkfを用いること
echo “日本語” | nkf -j | mail -s “test” xxx@xxx.xxx.xxx.xxx

telnet

telnetについて。斜体はエコー内容を現す。max os10.8 ターミナルにて。

<HTTPリクエスト>
telnet IPアドレス 80
Trying xxx.xxx.xxx.xxx…
Connected to xxx.xxx.xxx.xxx.
Escape character is ‘^]’.

GET http://xxx.xxx.xxx.xxx/index.html

プロキシサーバーを経由するときも同様である
telnet プロキシサーバーのIPアドレス ポート番号
Trying xxx.xxx.xxx.xxx…
Connected to xxx.xxx.xxx.xxx.
Escape character is ‘^]’.

GET http://xxx.xxx.xxx.xxx/index.html

正確には
GET /index.html?arg1= HTTP/1.0
Host:xxx.xxx.xxx.xxx

POST /index.html HTTP/1.0
Host:xxx.xxx.xxx.xxx
key1=val2&key2=val2

という風にする

<SMTPサーバーを利用してメール送信>
ユーザー名やパスワードはbase64に変換して入力するのでopensslを用いて用意しておく
echo -n username | openssl enc -e -base64
※echoには-nオプションをつけないと改行も変換されてしまうので注意
echo dXNlcm5hbWUK | openssl enc -d -base64

telnet SMTPサーバーのIP ポート番号
220 ~
HELO SMTPサーバーのIP
250 ~
AUTH LOGIN
334 VXNlcm5hbWU6 <-Username:のこと
base64にエンコードしたusername
334 UGFzc3dvcmQ6 <-Password:のこと
base64にエンコードしたpassword
~ Authentication successful
MAIL FROM:送信元のメールアドレス
~ Ok
RCPT TO:送信先のメールアドレス
~ Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject:test
From:送信元のメールアドレス
To:送信先のメールアドレス
This is a test mail from telnet.
.
~ Ok

plistの編集

1.Xcodeを使う
2.plutilというコマンドを使う

Xcodeでは権限がないと編集できない
ターミナルで権限を与えてから編集するのであれば、最初からターミナルで行った方が容易だろう。

lion以降からplistファイルがバイナリらしいが、
plutil -convert xml1 temp.plist という風にXMLとかに変換が可能。

Applescript

1. applescript editorを開く
2. スクリプトを書く
  例:display dialog “Hello World”
    
tell application “Numbers” to open (“Users:h-ito:R:DAT:out.csv”)
※パスはコロンなので注意!

3. 実行ファイルとして書き出す

terminalにて
osascript -e ‘tell application “iTunes” to play’
※display dialogのようなものは直接呼び出せない

文字コード変換

①vimを利用する
1. ファイルに文字コードshift-jisを指定して開き直す
:e ++enc=sjis

起動時にコマンドを指定する方法もある
>vim temp.txt -c “e ++enc=sjis”
または
>vim “+e ++enc=sjis temp.txt”

2. ファイルの文字コードをutf-8に変更する
:set fileencoding=utf-8
3. 保存
:wq

一連の操作をsjis-utf8.vimというファイルにしておけば
sjis-utf8.vim
e ++enc=sjis
set fileencoding=utf-8
wq

次のコマンドで一度で変換できる
>vim sjis.txt -c “source sjis-utf8.vim”

②nkfを利用する
>sudo port install nkf

>nkf -g temp.txt
UTF-8

オラクルはSHIFT-JISなので、temp.sqlはSHIFT-JISしか受け付けない。
temp.sqlがUTF-8だった場合
>nkf -s temp.sql > temp.sql
でファイルの文字コードを変換する

ターミナルがutf-8の設定の場合実行するときにパイプで変換
>sqlplus temp.sql | nkf -w

Mac 起動時オプション

起動または再起動時

C :CD、DVD、USBの起動ディスクから起動

option+command+P+R :NVRAMのリセット
[使用例]
メモリ増設時

option :ボリューム選択(デュアルブートのときなど)
eject :工学ドライブを排出
shift :セーフモード
command+V :Verboseモード

command+S :シングルユーザーモード
[使用例]
①sudoersの権限を0440に戻せないとき。sudoersは0440でないと読めない。書き直して変更したら戻せなくなる
  1.reboot -> single user mode
2.mount -uw /
3.chmod 0440 /private/etc/sudoers
4.reboot

②修復
/sbin/fsck -fy
これで修復されなければ、問題のディスクは表示されるので、fsck_hfsを用いて修復
umount /dev/diskname
fsck_hfs -r /dev/diskname