OSXとLinuxでグループ名をgidに解決するには?

OSXとLinuxでグループ名をgidに解決するには?

staffシンボルグループ名(例:)を数字に変換できる短いコードスニペットはありますか?グループ番号(例えば82)?

コードはOS XとGNU / Linuxで同じように実行する必要があります。

ベストアンサー1

Pythonを使用するモジュールgrp十分簡単。初心者のための重要なアイデア:

import grp
print(grp.getgrnam("my_group_name").gr_gid)

ただし、より強力なソリューションを使用するには時間がかかりました。

echo $MYGROUPNAME | python -c 'import grp,sys; gn=sys.stdin.readline().strip(); [gid]=[g.gr_gid for g in grp.getgrall() if g.gr_name==gn][:1]; print(gid)'

まず、両方で動作するように書かれています。アナコンダ2とアナコンダ3

第二:それ使用しないでくださいgrp.getgrnam()ただし、すべてのグループをインポートして独自のフィルタリングを実行します。なぜ?getgrnam()私がテストした1つ以上のMacではまったく機能しないからです。

第三:それ複数の結果を切り取る。なぜ?grp.getgrall()私がテストした少なくとも1つのGentooでは、重複した結果が返されたためです。

最後に、そうです。存在しないグループは逆追跡を引き起こします。自分のニーズに合わせて調整してください。


気づく この問題いくつかのビットが提供されていますが、新しい回答は閉じられて移行できません。だからここに自己答えがあります。

おすすめ記事