Поврежденная проблема с подключением тома ntfs

Ваш сценарий пытается объединить два интерпретатора. У вас есть и #!/bin/bash, и #!/usr/bin/expect. Это не сработает. Вы можете использовать только один из двух вариантов. Поскольку bash был первым, ваш сценарий выполняется как сценарий bash.

Однако, внутри вашего сценария есть expect команды, такие как spawn и send. Поскольку сценарий читается bash, а не expect, это не удается. Вы можете обойти это, написав различные expect скрипты и вызывая их из вашего bash скрипта или переведя все в expect.

Однако лучшим способом, позволяющим избежать ужасной практики хранения паролей открытым текстом в простом текстовом файле, является установка беспарольного ssh. Таким образом, scp не будет нуждаться в пароле, а вам не нужно будет expect:

  1. Сначала создайте открытый ключ ssh на вашей машине:

    ssh-keygen -t rsa
    

    Вам будет предложено ввести парольную фразу, которую нужно будет вводить при первом запуске любой команды ssh после каждого входа в систему. Это означает, что для нескольких команд ssh или scp вам нужно будет ввести ее только один раз. Оставьте парольную фразу пустой для доступа без пароля.

  2. После создания открытого ключа скопируйте его на каждый компьютер в вашей сети:

    while read ip; do 
     ssh-copy-id -i ~/.ssh/id_rsa.pub user1@$ip 
    done < IPlistfile.txt
    

    Файл IPlistfile.txt должен представлять собой файл, содержащий имя или IP сервера в каждой строке. Например:

    host1
    хост2
    хост3
    

    Поскольку вы делаете это впервые, вам придется вручную ввести пароль для каждого IP, но как только вы это сделаете, вы сможете копировать файлы на любую из этих машин с помощью простой команды:

    scp file user@host1:/path/to/file
    
  3. Удалите expect из вашего скрипта. Теперь, когда у вас есть беспарольный доступ, вы можете использовать ваш скрипт так:

    #!/bin/bash
    echo "Я потерплю неудачу, если вы дадите нежелательные значения!!!"
    echo " "
    echo "Введите имя файла: "
    read filePath
    echo " "
    echo "Куда вы хотите скопировать?"
    echo "Enter"
    echo "1. if Host1"
    echo "2. if Host2"
    echo "3. if Host3"
    прочитать выбор
    echo " "
    if [ $choice -eq "1" ]
    then
     scp filePath uname@host1:/usr/tmp 
    elif [ $choice -eq "2" ]
    , тогда
     scp filePath uname@host2:/usr/tmp 
    elif [ $choice -eq "3" ]
    , тогда
     scp filePath uname@host3:/usr/tmp 
    else
     echo "Неправильный ввод"
    fi
    
1
26.05.2018, 09:55
1 ответ

Finalmente encontré una manera de resolverlo. Usé la utilidad de copia de seguridad gratuita llamada testdisk. Está disponible tanto para windows como para linux. Lo usé para hacer una copia de seguridad de mis datos del disco duro. Luego usé el administrador de particiones para eliminar la partición completa. Y por fin creó la nueva partición. Ahora funciona bien.

1
28.01.2020, 00:34

Теги

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