Como canalizar argumentos para stdin?

0

Estou tentando gerar uma chave privada usando o comando keytool , mas ela me pede muitos detalhes, como minha frase-chave, meu nome e os detalhes da minha organização. Eu quero passar todas as entradas em um comando.

Por exemplo:

###SHELL###
$  keytool -genkey -v -keystore TestApp.keystore -alias TestApp -keyalg RSA -keysize 2048 -validity 10000
    Enter passphrase: my  passphrase here
    Repeat the passphrase: my passphrase again
    Enter your full name: my name
    Enter your organization unit: my org. unit
    Enter your organization name: my org. name
    Enter password for keystore (press return for same as key passphrase): i press enter here

   Success!!

$ _  

Aqui, eu quero enviar todas essas entradas (senha, nome, etc.) para o STDIN, para que eu não seja solicitado por essas entradas depois de digitar o comando.

Isso é possível? Se sim, por favor diga como. Eu sou novo no script Bash, então, por favor, fique comigo:)

    
por Ashish 23.02.2015 / 18:00

2 respostas

0

Você pode usar a ferramenta chamada "xdotool" para agir em vez de digitar os comandos. Por exemplo, se você quiser inserir as seguintes informações em uma entrada do usuário:

1.) Primeiro nome 2.) Sobrenome 3.) nome de usuário 4.) Senha 5.) Organização

Você pode definir variáveis para essas coisas em um script como este exemplo:

#!/bin/bash

FNAME="first name"
LNAME="last name"
UNAME="username"
PWORD="password"
ONAME="Organization name"

## This moves the mouse into the specific screen coordinates.
xdotool mouse move # #

## This types the first name and hits enter.
xdotool type "$FNAME"
xdotool key Return

## This types the last name and hits enter.
xdotool type "$LNAME"
xdotool key Return

## This types the username and hits enter.
xdotool type "$UNAME"
xdotool key Return

## This types the password and hits enter.
xdotool type "$PWORD"
xdotool key Return

## This types the organization and hits enter.
xdotool type "$ONAME"
xdotool key Return

O que o xdotool faz é enviar comandos falsos como movimento e ação do mouse, além de enviar entradas de teclado. É como se você estivesse digitando tudo isso quando não está. Você pode definir um script como esse para ser chamado sempre que for solicitado a inserir essas informações. Para obter as coordenadas da tela, você moverá o mouse para onde a janela em que você precisa digitar for e usar este comando:

xdotool getmouselocation

Isso lhe dará as coordenadas específicas para essa posição do mouse. Então o ...

xdotool click 1

... o comando clicará dentro dessa janela e a transformará na sua janela ativa para que o script possa ser executado corretamente. É uma pequena ferramenta muito agradável que pode ser usada como uma macro para qualquer tarefa que requer mouse e teclado. Apenas esteja avisado que o xdotool não está pré-instalado em todas as distribuições linux, então você pode ter que instalá-lo primeiro.

    
por 23.05.2016 / 09:31
0

Você pode usar espera por isso. O script esperado seria algo como isto:

'' '

#!/usr/bin/expect -f
spawn keytool -genkey -v -keystore TestApp.keystore -alias TestApp -keyalg RSA -keysize 2048 -validity 10000
expect "Enter keystore password:"
send "my_passphrase\n"
expect "Re-enter new password:"
send "my_passphrase\n"
#and so on with the other prompts

'' '

    
por 28.10.2016 / 14:03

Tags