2013-07-25 3 views
0

Я пытаюсь создать простой скрипт bash, который вызывает sftp.Базовый сценарий bash с sftp

В интерактивном режиме, когда пользователь использует «put» в файле, я хочу выделить некоторые метаданные в этом файле.

Я читаю руководство Bash для начинающих на tldp.org, но мне сразу становится ясно, как написать оператор if, который проверяет, когда пользователь нажимает на команду «put».

Спасибо.

Редактировать: добавлен базовый код и разработка.

#!/bin/bash 

sftp 133.43.453.132 # I made up this IP for demonstration purposes 
while True 
do 
if [user uses 'put' to a transfer a file to remote server] # New to bash so I don't know how to express this. 
    then 
     echo "Random stuff" 
fi 
done 

Так что, как я могу написать это, если условие?

+2

, пожалуйста, покажите, что у вас есть – hek2mgl

+1

В общем, вы этого не делаете. То есть трудно использовать скрипт bash для управления другой командой, в то же время позволяя пользователю взаимодействовать с ним. Существует инструмент под названием [expect] (https://en.wikipedia.org/wiki/Expect), который может делать такие вещи, но нетривиально делать с ним что-то сложное. – larsks

+0

Спасибо за комментарий. Я хочу сделать это, потому что всякий раз, когда пользователь использует put, чтобы поместить файл на сервер, я хочу, чтобы вывести некоторые метаданные для этого файла. Как именно я должен это делать? Я не знаком с bash, поэтому я не знаю оптимального способа выразить это. – user1413969

ответ

1

Наивный подход может быть

#!/bin/bash 
sftp 133.43.453.132 | tee /dev/tty | 
while read prompt command argument1 rest 
do 
    case $command in put) echo "Random stuff";; 
    esac 
done 
  • учитывать такие вещи, как редактирование командной строки или выходной последовательности, по крайней мере, более сложный фильтр, чем tee /dev/tty будет необходимо.
Смежные вопросы