Using a Python subprocess in WSL to create an item in a vault hangs when capuring output

CentredK
CentredK
Community Member

I have a python script that I use to batch create items in vault within ubuntu under WSL. Works in general - Creating Vaults, reading items etc. except for creating an item in an existing vault whilst capturing - it hangs in some kind of loop and has to be aborted.

I am calling op.exe because I want to call the windows command line client - we are generally using Microsoft SSO, so you can't use the ubuntu command line client by itself.

  • Windows 11
  • WSL2
  • Description: Ubuntu 24.04 LTS
  • 1Password for Windows 8.10.45
  • OP command line 2.29.0
  • Python 3.12.3

Note that '---' below is the python prompt '>>>' - I couldn't figure out how to escape it.

(flow_pass) root@Ansible:~# python3
Python 3.12.3 (main, Jul 31 2024, 17:43:48) [GCC 13.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
 import subprocess

# Create vault and capture output
---subprocess.run (['op.exe', 'vault', 'create',  'TestVault4'],capture_output=True)
CompletedProcess(args=['op.exe', 'vault', 'create', 'TestVault4'], returncode=0, stdout=b'ID:                   ianbnf5qlqp7thpobob4izqc4i\nName:                 TestVault4\nType:                 USER_CREATED\nAttribute version:    1\nContent version:      1\nItems:                0\nCreated:              now\nUpdated:              now\n', stderr=b'')

# Create item within the vaut - don't capture output
---subprocess.run(['op.exe', 'item', 'create', '--vault', 'TestVault4', '--category', 'Login', '--title', 'TestItem4.1'],capture_output=False)
ID:          sm4yuum3ztuwc3qqjm3uoqwamq
Title:       TestItem4.1
Vault:       TestVault4 (ianbnf5qlqp7thpobob4izqc4i)
Created:     now
Updated:     now
Favorite:    false
Version:     1
Category:    LOGIN
CompletedProcess(args=['op.exe', 'item', 'create', '--vault', 'TestVault4', '--category', 'Login', '--title', 'TestItem4.1'], returncode=0)

# Create item but capture output
---subprocess.run(['op.exe', 'item', 'create', '--vault', 'TestVault4', '--category', 'Login', '--title', 'TestItem4.2'],capture_output=True)
^CTraceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.12/subprocess.py", line 550, in run
    stdout, stderr = process.communicate(input, timeout=timeout)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/subprocess.py", line 1209, in communicate
    stdout, stderr = self._communicate(input, endtime, timeout)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/subprocess.py", line 2115, in _communicate
    ready = selector.select(timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/selectors.py", line 415, in select
    fd_event_list = self._selector.poll(timeout)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt

My account doesn't use SSO, so i can set up the Ububtu CLI and use that. Creating items whilst capturing the output works OK

(flow_pass) root@Ansible:~# python3
Python 3.12.3 (main, Jul 31 2024, 17:43:48) [GCC 13.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
--- import subprocess
--- subprocess.run (['op', 'vault', 'create',  'TestVault5'],capture_output=True)
CompletedProcess(args=['op', 'vault', 'create', 'TestVault5'], returncode=0, stdout=b'ID:                   gbungw3houcos7ln5scff4lt7a\nName:                 TestVault5\nType:                 USER_CREATED\nAttribute version:    1\nContent version:      1\nItems:                0\nCreated:              now\nUpdated:              now\n', stderr=b'')
--- subprocess.run(['op', 'item', 'create', '--vault', 'TestVault5', '--category', 'Login', '--title', 'TestItem5.2'],capture_output=True)
CompletedProcess(args=['op', 'item', 'create', '--vault', 'TestVault5', '--category', 'Login', '--title', 'TestItem5.2'], returncode=0, stdout=b'ID:          yrw4googgp62ppcqd6axjz7zyu\nTitle:       TestItem5.2\nVault:       TestVault5 (gbungw3houcos7ln5scff4lt7a)\nCreated:     now\nUpdated:     now\nFavorite:    false\nVersion:     1\nCategory:    LOGIN\n', stderr=b'')

1Password Version: 8.10.45
Extension Version: Not Provided
OS Version: Windows 11
Browser: Not Provided