78252


例えば以下のようなFirefoxであるように振る舞うソフトウェアの設定ファイルがあるとします。

[code]

    [main]
    useragent = Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:89.0) Gecko/20100101 Firefox/89.0
    
[/code]

Firefoxがバージョンアップしたら以下のように自動で書き換わるようにしたいです。

[code]

    [main]
    useragent = Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:90.0) Gecko/20100101 Firefox/90.0
    
[/code]

しかしインストールされているFirefoxのUA文字列をどこからもってくればいいのか分かりません。  
なにかいいアイデアはありますか？


CC BY-SA 4.0
2021-07-17T10:24:59.510
78251
2021-07-17T10:24:59.510
25936
question
linux shellscript
設定ファイルに書かれているFirefoxのUAを自動的に現在インストールされているFirefoxのものにしたい

[code]

     Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:90.0) Gecko/20100101 Firefox/90.0
    
[/code]

上記のようなFirefoxのUA文字列でバージョンアップしたときに変更されるのは`rv:`と`Firefox/`の直後のバージョン番号だけです。  
ですから実際に必要なのはFirefoxのバージョンだけです。  
`/usr/bin/firefox --version`とか単に`firefox
--version`とするとFirefoxのバージョン番号を含む文字列を得ることができます。

例えば以下のような感じで利用すると希望する結果を得ることができます。

[code]

    #!/bin/sh
    set -Cu
    #set -vx # Uncomment for debugging
    
    readonly version=$(/usr/bin/firefox --version | cut --delimiter=' ' --fields=3)
    readonly UA="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:${version}) Gecko/20100101 Firefox/${version}"
    
    cd "/path/to/config/dir" || exit 1 
    
    sed "/useragent/s#Mozilla.\+#$UA#" <test.conf >test.conf.new
    
    mv --force test.conf.new test.conf
    
    exit $?
    
[/code]

あとは上記のようなスクリプトを`cron`で自動実行するようにしてあげればいいでしょう。


CC BY-SA 4.0
2021-07-17T10:24:59.510
78252
2021-07-17T10:24:59.510
25936
78251
answer