ожидать записи в удаленный файл через SSH - PullRequest
0 голосов
/ 27 мая 2019

У меня есть скрипт, который анализирует локальный файл и удаленно выполняет новый файл, созданный с содержимым предыдущего.

 Just an example: machine1 with the following command file content:
#cmd1
<blank line here>
#cmd5
hostname -f
reboot`

Теперь скрипт проанализирует этот файл, удалит пробелы и закомментированные строки и УДАЛЕННО создаст новый файл с новым содержимым:

proc _command {fh} {
    set fd [open "$fh" r]
    #set fp [open "/tmp/script_${fh}" w+]
    while { [gets $fd data] >= 0 } {
            if { [string length $data] > 0 } {
                    #skip commented & blank lines
                    if {[string match "#*" $data] || [string match "" $data]} {
                            continue
                    }
                    #puts $fp "$data"
                    send  "$data\r"
                    #send [exec echo $data >>/tmp/1.txt]
            }
    }
                    #close $fp
}
...
   spawn -noecho ssh -i $home/.ssh/.id_rsa -q -o StrictHostKeyChecking=no $user@$server
                    expect {
                            -re "($prompt)" {
                                            send "sudo su -\r"
                                            expect {
                                                    -re "# " {
                                                            _command $cfile
                                                            send "exit\r"

Что ж, сейчас часть процедуры, которая пишет в файл, комментируется, так как каждый раз, когда я выполняю скрипт, файл создается локально, а не на удаленной машине.

Я скучаю по этому, но не могу понять, что ...

1 Ответ

1 голос
/ 27 мая 2019

Тебе действительно нужно ожидать этого?Вы уже используете аутентификацию по секретному ключу, поэтому я думаю, что все, что вам действительно нужно, это:

sed -e '/^$/d' -e '/^#/d' local_file | ssh user@host sudo sh -c 'cat > remote_file'
...