我最近開始使用bash自動化與chntpw
的Windows救援磁盤。我試圖設置程序以使用expect
命令來偵聽某個chntpw
對話框問題,並在沒有任何用戶輸入的情況下輸入正確的答案。出於某種原因,在設置bash腳本使用#!/usr/bin/expect
而不是#!/bin/bash
之後,很多標準終端命令不再被理解。簡單的命令未找到bash(#!/ usr/bin/expect)
[email protected]:~/Desktop/projects/breezee$ bash breezee1.sh
端子輸出如下:
我鍵入到這個終端上運行腳本
BREEZEE 1.0
Welcome to BREEZEE
breezee1.sh: line 9: fdisk: command not found
[Select] /dev/:
這裏是我的代碼:
#!/usr/bin/expect
clear
echo "BREEZEE 1.0"
echo "Welcome to BREEZEE"
fdisk -l
#list partitions
echo -n "[Select] /dev/:"
#ask user to choose primary windows partition
read sda
clear
echo /dev/$sda selected
umount /dev/$sda
sudo ntfsfix /dev/$sda
sudo mount -t ntfs-3g -o remove_hiberfile /dev/$sda /mnt/
cd /mnt/Windows/System32/config
clear
chntpw -l SAM #list accounts on windows partition
chntpw -u Administrator SAM
#now supply chntpw with values to run the password clear (this answers the prompts)
expect '> '
send '1\r'
expect '> '
send '2\r'
expect '> '
send '3\r'
expect ': '
send 'y\r'
expect '> '
send 'q\r'
expect ': '
send 'y\r'
clear
echo "Operation Successfull!"
chntpw -l SAM #list accounts on windows partition
在總之,我試圖使用標準的bash /終端命令以及expect
命令。我可能會說這一切都是錯誤的,所以請糾正我,因爲我一直在解決這個問題約三天,並沒有得到很遠:(
這實際上很有意義。作爲bash的新手,我只是假設'!/ usr/bin/expect'是一個可選的bash解釋器,包含預期的支持。很明顯,我錯了,這就是我的困惑所在。非常感謝! – pattyd
等等,所以我只是將解釋器改爲'!#/ bin/bash',而我仍然得到'fdisk:command not found'問題? **更新:**添加'sudo'修復它。 – pattyd
@pattyd:另外,用腳本運行腳本'bash breezee1.sh'會將它作爲bash腳本運行,無論shebang('#!')行如何表示。通常,您應該使腳本可執行(例如,'chmod + x breezee1.sh'),然後用'./breezee1.sh'(讓shebang控制它如何運行)等東西來運行它們。 –