Linux通过bash脚本设置日期和时间

时间:2014-09-11 10:02:11

标签: linux bash

我正在尝试通过bash脚本设置假日期 我正在使用以下命令:

#!/bin/bash
echo 'myPass' | sudo -s 'date -s "1 NOV 2011 09:00:00"'

但是我收到命令错误。 什么是正确的方法?

2 个答案:

答案 0 :(得分:2)

sudo默认情况下不会从标准输入读取密码,而是从终端本身读取密码,因此您无法以这种方式将密码管道传输到sudo。您需要使用-S选项从标准输入中读取。

echo "myPass" | sudo -S date -s "1 NOV 2011 09:00:00"

(请注意,您不需要使用-s(小写)选项; sudo可以直接运行date而无需启动插入的shell。)

但是,暴露您的密码会带来安全风险。最好配置sudo以允许您(或任何打算运行此脚本的人)运行 这个特殊的date命令没有密码。

答案 1 :(得分:-2)

对于sudo,没有破折号的第一个参数是要执行的命令,以下参数是赋予该命令的参数。如果将命令及其参数用引号括起来(例如"echo foo"),则sudo尝试执行命令“echo foo”而不是命令“echo”,参数“foo”。因此,您需要省略最外面的引号:

sudo date -s "1 NOV 2011 09:00:00"