Script esperado: eliminar contraseña en key privada

Estoy tratando de eliminar la contraseña en una key privada. Hacerlo a mano es simple, ejecuto este command e ingreso la contraseña: openssl rsa <newkey.pem > newkey-no-password.pem

Intento hacer esto en un script esperado, para no tener que escribir la contraseña. Aquí está el código que escribí:

 #!/usr/bin/expect -f set PASSWORD myPassword spawn openssl rsa <newkey.pem > newkey-no-pass.pem expect "Enter pass phrase:" send "$PASSWORD\r" expect eof 

Y aquí está la salida que obtengo al ejecutar el script:

 [me@mymachine]# ./test.exp spawn openssl rsa <newkey.pem > newkey-no-pass.pem unknown option <newkey.pem rsa [options] <infile >outfile ... all the options for rsa command ... 

Intenté poner <newkey.pem entre ' o " , inútilmente.

¿Qué estoy haciendo mal y cómo puedo solucionar este problema?

Creo que el command de generación no analiza las networkingirecciones de shell < . Puede hacer que funcione pasando a través de un shell con sh -c :

 #!/usr/bin/expect -f set PASSWORD myPassword spawn sh -c "openssl rsa <newkey.pem > newkey-no-pass.pem" expect "Enter pass phrase:" send "$PASSWORD\r" expect eof 

Esto funciona para mi:

 # expect -f kkf spawn sh -c openssl rsa <newkey.pem > newkey-no-pass.pem Enter pass phrase:myPassword writing RSA key