以下bash脚本在L1上每10分钟运行一次,在脚本中用于生成随机密码,然后将其打印到文件中,然后将其复制到L2。
#!/bin/bash
targetFile="testfilegen2.log"
address="192.168.1.1"
netmask="255.255.255.0"
channel="1"
essid="GreRPi"
random=$(pwgen 13 -1)
sudo echo "source-directory /etc/network/interfaces.d" > "$targetFile"
sudo echo "auto lo" >> "$targetFile"
sudo echo "auto wlan0" >> "$targetFile"
sudo echo "allow-hotplug wlan0" >> "$targetFile"
sudo echo "iface wlan0 inet static" >> "$targetFile"
sudo echo "address $address" >> "$targetFile"
sudo echo "netmask $netmask" >> "$targetFile"
sudo echo "wireless-channel $channel" >> "$targetFile"
sudo echo "wireless-essid $essid" >> "$targetFile"
sudo echo "wireless-mode ad-hoc" >> "$targetFile"
sudo echo "wireless-key s:$random" >> "$targetFile"
sleep 1
scp "$targetFile" pi@192.168.1.1:~/.ssh/
sudo service networking restart
Unfornaltey L1似乎没有收到新密码,但L2确实如此。
L1输出
pi@raspberrypi:/etc/greenwich $ cat testfilegen2.log
source-directory /etc/network/interfaces.d
auto lo
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.1.1
netmask 255.255.255.0
wireless-channel 1
wireless-essid GreRPi
wireless-mode ad-hoc
wireless-key s:she5Bie1ojoon
L2输出
pi@raspberrypi:~/.ssh $ cat testfilegen2.log
source-directory /etc/network/interfaces.d
auto lo
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.1.1
netmask 255.255.255.0
wireless-channel 1
wireless-essid GreRPi
wireless-mode ad-hoc
wireless-key s:ez2eeCeich0oc
任何建议?
谢谢
答案 0 :(得分:0)
假设您以非root用户身份运行脚本,重定向不适用于sudo,请尝试以下
sudo sh -c "echo source-directory /etc/network/interfaces.d > $targetFile"
同样用于双重定向。
将脚本的输出和错误重定向到日志文件,以便您知道出了什么问题。为此,请执行以下更改:
#!/bin/bash
{
...
your script here
...
} 2>&1 > /tmp/myScript.log
您可以在调试模式下进一步运行脚本,以逐步调试脚本。
如果您反复搜索同一个文件,我建议您检查远程计算机上文件的修改时间,以确认该文件是否已收到更新。
答案 1 :(得分:0)
正如Vikas Tiwari指出的那样,重定向发生在 sudo
运行之前的当前用户。您需要使用sudo
打开文件。这可以通过tee
程序完成,您只需要运行一次。
targetFile="testfilegen2.log"
address="192.168.1.1"
netmask="255.255.255.0"
channel="1"
essid="GreRPi"
random=$(pwgen 13 -1)
{
echo "source-directory /etc/network/interfaces.d"
echo "auto lo"
echo "auto wlan0"
echo "allow-hotplug wlan0"
echo "iface wlan0 inet static"
echo "address $address"
echo "netmask $netmask"
echo "wireless-channel $channel"
echo "wireless-essid $essid"
echo "wireless-mode ad-hoc"
echo "wireless-key s:$random"
} | sudo tee "$targetFile" > /dev/null
sleep 1
scp "$targetFile" pi@192.168.1.1:~/.ssh/
sudo service networking restart
答案 2 :(得分:0)
考虑到您的文件被复制到目的地,它意味着在源上创建。毫无疑问。 似乎" $ targetfile"是在您不希望它进入的目录中创建的。如果未指定目标的完整路径,则会出现典型问题。 您的脚本位于" / etc / greenwich /"但是当cron启动它时,脚本运行的当前目录是用户主目录(在大多数情况下)和" $ targetfile"在当前目录中创建。
请定义" $ targetfile"完整路径,指向要在其中创建文件的位置。