Bash скрипт для запуска через ssh не видит удаленный файл - PullRequest
0 голосов
/ 22 октября 2011

Скрипт использует scp для загрузки файла.Это работает.

Теперь я хочу войти с помощью ssh, перейдите в каталог cd, в котором находится загруженный файл, выполните md5sum для этого файла.Сценарий постоянно сообщает мне, что md5sum не может найти $ LOCAL_FILE.Я пытался сбежать: \ $ LOCAL_FILE.Попробовал процитировать ВЗ: << 'ВЗ'.Я частично понимаю, что отсутствие побега означает, что все происходит локально.echo <code>pwd unescaped указывает локальный путь.Но почему я могу сделать «echo $ MD5SUM> $ LOCAL_FILE.md5sum», и он создает файл на удаленной машине, но «echo md5sum $LOCAL_FILE> md5sum2» не работает?И если это локальный md5sum, как мне сказать, чтобы он работал на пульте?


scp "files/$LOCAL_FILE" "$i@$i.567.net":"$REMOTE_FILE_PATH"             

ssh -T "$i@$i.567.net" <<EOI                                                                       
touch I_just_logged_in                        
cd $REMOTE_DIRECTORY_PATH                     
echo `date` > I_just_changed_directories      
echo `whoami` >> I_just_changed_directories   
echo `pwd` >> I_just_changed_directories      
echo "$MD5SUM" >> I_just_changed_directories  
echo $MD5SUM > $LOCAL_FILE.md5sum             
echo `md5sum $LOCAL_FILE` > md5sum2           
EOI

1 Ответ

0 голосов
/ 22 октября 2011

Вы должны подумать о том, когда $LOCAL_FILE интерпретируется.В этом случае, так как вы использовали двойные кавычки, это интерпретируется на отправляющей машине.Вместо этого вам нужно заключить строку в кавычки таким образом, чтобы $LOCAL_FILE находился в командной строке на принимающей машине.Вы также должны получить правильный «документ здесь».То, что вы показываете, просто отправляет вывод в touch в ssh.

То, что вам нужно, будет выглядеть примерно так:

ssh -T address <'EOF'
cd $REMOTE_DIRECTORY_PATH
...
EOF

Правила цитирования в bash несколько загадочны.Вы можете прочитать о них в Расширенном руководстве Менделя Купера по написанию сценариев Bash .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...