Перечислите все файлы, затем выполните скрипт с частью имени файла.

Вот инструкции, следующие на странице TUG на TeX Live и Debian / Ubuntu: Установите Vanilla TeX Live как root, общесистемный. Убедитесь, что установлены только пакеты Debian TeX Live: tex-common, texinfo и, возможно, lmodern. Добавьте каталог bin TeX Live в ENV_PATH в /etc/login.defs. Скажите APT о вашей установке TeX Live, создав фиктивный пакет, используя equivs:


    $ aptitude install equivs # as root
    mkdir /tmp/tl-equivs && cd /tmp/tl-equivs
    equivs-control texlive-local
    # edit texlive-local (see below)
    $ equivs-build texlive-local
    $ sudo dpkg -i texlive-local_2011-1_all.deb
На шаге «edit texlive-local» отредактируйте поле Maintainer и список пакетов, предоставленных вашей локальной установкой TeX Live, в зависимости от ситуации. Если вы установили scheme-full, кроме collection-texinfo, как рекомендовано, файл должен выглядеть следующим образом

(В принципе, нужно создать фиктивный пакет для обмана apt-get)

Для других способов см. Также TeX Live и Debian / Ubuntu на TeX.SX.

3
задан 2 December 2017 в 18:45

2 ответа

Это должно выполнить задание:

#!/bin/bash for i in *.cfg; do sshpass -f /path/to/passwordfile scp ${i%.cfg}.txt username@${i%.cfg}: done

или, скорее,

for i in *.cfg;do sshpass -f /path/to/passwordfile scp ${i%.cfg}.txt username@${i%.cfg}:;done

Пароль передается на scp с помощью sshpass (следуя инструкциям Как передать пароль на scp?), который читает его из passwordfile - не забудьте защитить этот файл от несанкционированного доступа к чтению с помощью chmod 400!

Я немного смутил, какой файл вы хотите отправить сюда, я понял, что есть, например, файл ABC123.txt, который должен быть отправлен на хост ABC123, поэтому я просто раздели .cfg с помощью . Как передать пароль на scp? и добавил .txt.

] По умолчанию user@host: в домашний каталог user я удалил путь.

4
ответ дан 18 July 2018 в 02:01

Это должно выполнить задание:

#!/bin/bash for i in *.cfg; do sshpass -f /path/to/passwordfile scp ${i%.cfg}.txt username@${i%.cfg}: done

или, скорее,

for i in *.cfg;do sshpass -f /path/to/passwordfile scp ${i%.cfg}.txt username@${i%.cfg}:;done

Пароль передается на scp с помощью sshpass (следуя инструкциям Как передать пароль на scp?), который читает его из passwordfile - не забудьте защитить этот файл от несанкционированного доступа к чтению с помощью chmod 400!

Я немного смутил, какой файл вы хотите отправить сюда, я понял, что есть, например, файл ABC123.txt, который должен быть отправлен на хост ABC123, поэтому я просто раздели .cfg с помощью . Как передать пароль на scp? и добавил .txt.

] По умолчанию user@host: в домашний каталог user я удалил путь.

4
ответ дан 24 July 2018 в 17:30
  • 1
    УДИВИТЕЛЬНО, спасибо. Я был ближе, чем думал, но не смог получить 100%. – Preston Cole 2 December 2017 в 18:42
  • 2
    Пожалуйста, не используйте sshpass -p. Даже в руководстве отмечается, что это не очень безопасно для большинства систем. Просто используйте SSHPASS=$password sshpass -e .... – ilkkachu 2 December 2017 в 22:54
  • 3
    @ilkkachu Ты совершенно прав, я изменил весь ответ, чтобы предложить гораздо более безопасный подход. Спасибо! – dessert 2 December 2017 в 23:20
  • 4
    Хотя вы можете избавить пользователя от необходимости создавать файл и спросить у них пароль из сценария и поместить в envvar, что-то вроде read -rs pass; SSHPASS=$pass sshpass -e .... Но тогда мы, вероятно, доберемся до точки, где используются ssh-ключи и ssh-agent будет умнее – ilkkachu 2 December 2017 в 23:58

Другие вопросы по тегам:

Похожие вопросы: