前提・実現したいこと
Automatorで/private/etc/hostsファイルに、11.111.111.111 fuga.com
を入力したいです。
まず、ターミナルでgsedをインストールしました。
$ brew install gnu-sed
そして、以下のコードを入力すると、hostsファイルの8行目に11.111.111.111 fuga.com
が挿入できることを確認しました。
$ sudo gsed -i -e '8i11.111.111.111\ fuga.com' /private/etc/hosts
Automatorで実行する場合、sudoを使用しているので、パスワードが要求されます。
そのため、Automatorでの実行コードは以下のコードになると考えました。
osascript -e 'do shell script "sudo [コード]" with administrator privileges'
Automatorのアプリで実行する→ユーティリティ→シェルスクリプトを実行するを選択(シェルは/bin/zsh)
しかし、Automatorで以下のコードで実行すると、パスワードが要求され、入力後、エラーが出てしまいます。
osascript -e 'do shell script "sudo gsed -i -e '8i11.111.111.111\ fuga.com' /private/etc/hosts" with administrator privileges'
発生している問題・エラーメッセージ
execution error: sudo: gsed: command not found (1)”
gsedはターミナルではインストールできていますので、なぜできないか理由がわかりませんでした。
###試したこと
Automatorでシェルスクリプトを使えるシェルスクリプトを実行アクションの実行環境はターミナルの環境依存を継承しないと知り、パスを通してみましたが、エラーでした。
場所を確認
$ which gsed /usr/local/bin/gsed
Automatorで実行
export PATH=$PATH:/usr/local/bin osascript -e 'do shell script "sudo gsed -i -e '8i11.111.111.111\ fuga.com' /private/etc/hosts" with administrator privileges'
エラー内容
0:108: execution error: gsed: can't read fuga.com: No such file or directory (2)
以下のコードだとうまく実行されました。ただipアドレスとドメインの間に空白がほしいです。
export PATH=$PATH:/usr/local/bin osascript -e 'do shell script "sudo gsed -i -e \"8i11.111.111.111fuga.com\" /private/etc/hosts" with administrator privileges'
これだとエラーになります。
export PATH=$PATH:/usr/local/bin osascript -e 'do shell script "sudo gsed -i -e \"8i11.111.111.111\ fuga.com\" /private/etc/hosts" with administrator privileges'
“52:53: syntax error: """があるべきところですがunknown tokenが見つかりました。 (-2741)”
###参考記事
https://it-ojisan.tokyo/mac-linux-sed/
補足情報(FW/ツールのバージョンなど)
mac:Bigsur:11.6 version
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/15 14:16 編集
2021/10/15 14:47 編集
2021/10/16 01:11
2021/10/16 12:11