Enviar cadena a stdin en script bash

Quiero que mi script bash escriba una cadena en la secuencia de input estándar. Quiero que pase mi contraseña al command git push . Probé las tres opciones siguientes y ninguna de ellas funcionó: git me estaba pidiendo la contraseña.

 #!/bin/bash # 0 git push origin master <<< 'password' # 1 echo 'password' | git push origin master # 2 git push origin master <<EOF password EOF 

Todos los tres methods funcionan pasan la cadena password␤ al command.

El problema es que el command no lee la contraseña de la input estándar . Lo lee desde el terminal de control, es decir, abre el file especial /dev/tty y lee desde allí.

En el caso del transporte ssh, es en realidad el ssh el que solicita la contraseña y lo hace de la manera anterior (de ahí que esta discusión se aplique a cualquier otro uso de ssh o herramienta basada en ssh también). En el caso de http, el transporte git lo hace de la misma manera.

El motivo es doble:

  1. Para que pueda networkingirigir la input y / o salida del command real y aun así dar la contraseña desde el keyboard y ver el post en la terminal y
  2. para evitar lo que está tratando de hacer, lo que se desaconseja por razones de security.

Ver Git push: nombre de usuario, contraseña, ¿cómo evitar? para saber cómo usar los commands remotos de git sin dar contraseña cada vez. Si insiste en http, las opciones de ¿Hay alguna manera de saltear la escritura de contraseña al usar https: // en GitHub? o Git http: las cnetworkingenciales de security restringn que son más seguras. Ver también gitcnetworkingentials (7) .