К сожалению, это нежелательно по двум причинам:
1) если пользователь использует комбинацию '\ n' в пароле, во входных данных будет несоответствие
2) если в системе есть пользователи unix, то пользователь, использующий утилиту ps, может увидеть пароль
Лучшим способом было бы поместить имена в файл и прочитать его, используя Python pexpect для их чтения, не так, как показано ниже, но простого сценария достаточно, чтобы увидеть, как использовать pexpect
#!/usr/bin/python
#converted from: http://pexpect.sourceforge.net/pexpect.html
#child = pexpect.spawn('scp foo myname@host.example.com:.')
#child.expect ('Password:')
#child.sendline (mypassword)
import pexpect
import sys
user=sys.argv[1]
passwd=sys.argv[2]
child = pexpect.spawn('/usr/bin/smbpasswd -a '+str(user))
child.expect('New SMB password:')
child.sendline (passwd)
child.expect ('Retype new SMB password:')
child.sendline (passwd)
затем попробуйте: ./smbpasswd.py userName1 'f # @ (& * (_ \ n895'