背景:使いたいです。 このWi-Fi-シリアルポートアダプタ 望遠鏡を操縦して 星 Kubuntu 16.04(64ビット)で動作します。
socat
次のコマンドラインを使用して仮想COMポートを作成しました。
$ sudo socat pty,link=/dev/virtualcom0,raw tcp:10.0.0.1:4030
ここで新しいデバイスを見ました。
$ ls -l /dev/virtualcom0
lrwxrwxrwx 1 root root 10 2017-07-03 09:05 virtualcom0 -> /dev/pts/6
$ ls -l /dev/pts/6
crw--w---- 1 root tty 136, 6 2017-07-03 09:05 /dev/pts/6
たとえば、root権限で実行している限り/dev/virtualcom0
機能します。ただし、標準ユーザー権限でポートを使用しようとすると、次のエラーが発生します。picocomm
picosomm
$ picocom /dev/virtualcom0 --baud 9600 --imap lfcrlf
FATAL: cannot open /dev/virtualcom0: Permission denied
これに特別なudevルールを定義して、標準ユーザー権限で仮想COMポートにアクセスできるようにする方法を知っていますか?
編集#1
Deckertの答えで好むアプローチに応じて、次のようになります。
$ socat pty,link=/tmp/virtualcom0,raw tcp:10.0.0.1:4030
これはmacOSでもうまく機能します(homebrewを介してsocatをインストールした後)。
答え1
socatのマニュアルページを見て、答えを見つけました。
コマンドラインでより多くの式を追加して、ptyのプロパティにパターンとグループを追加できます。例に従い、ダイヤルアウトグループが所有する新しいシリアルポートを使用し、グループへの読み取り/書き込みアクセス権を持つには、次の手順を実行します。
$ sudo socat pty,link=/dev/virtualcom0,raw,group-late=dialout,mode=660 tcp:10.0.0.1:4030
答え2
仮想シリアルポートが必要な理由をまったく理解していません。そうすればどうなりますかtelnet 10.0.0.1 4030
?
socat
以下は、一般ユーザーなしで実行し(または何でも)sudo
アクセス可能なパスを選択することです。/tmp/vcom0
何らかの理由でこれがうまくいかず、明らかに可能であれば、sudo
所有者を変更してみてください。
sudo chown your_username /dev/virtualcom0
または権限
sudo chmod o+rw /dev/virtualcom0
編集する
udev
特定の疑似端末のルールを作成しようとしないでください。まず、どの医師ttyかを事前に知ることはできません。第二に、医師ttyはどこでも使用され、他のユーザーのためにこの擬似ttyを作成すると他のプログラムが失敗します。
最もきれいな解決策は、バリアント(1)(/tmp/vcom0
)を使用することです。
別のバリアントを使用する必要がある場合は、およびsocat
/を含むchmod
短いスクリプトを作成してchown
を使用してそのスクリプトを実行しますsudo
。必要に応じてを使用してシンボリックリンクをたどることができますreadlink
。
別のオプションは、生成されたリンクをsocat
使用して通常のユーザーとして呼び出し、完了したら終了する短いスクリプトを作成することです。このスクリプトを使って始めてください。stellarium
socat
stellarium