Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash写入文件(变量?)_Bash_Echo_Cat - Fatal编程技术网

Bash写入文件(变量?)

Bash写入文件(变量?),bash,echo,cat,Bash,Echo,Cat,确定尝试将SQL查询写入文本文件。我试过猫,但运气不好 以下是我想写入该文件的内容: USE vsftpd; CREATE TABLE `accounts` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `username` VARCHAR( 30 ) NOT NULL , `pass` VARCHAR( 50 ) NOT NULL , UNIQUE ( `username` )

确定尝试将SQL查询写入文本文件。我试过猫,但运气不好

以下是我想写入该文件的内容:

   USE vsftpd;
    CREATE TABLE `accounts` (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `username` VARCHAR( 30 ) NOT NULL ,
    `pass` VARCHAR( 50 ) NOT NULL ,
    UNIQUE (
    `username`
    )

) ENGINE = MYISAM ;

quit;
这就是我在使用cat或echo时得到的结果(也许我需要某种开关?)


在没有看到您使用的确切命令的情况下,很难说如何修复此问题,但我怀疑shell正在对您的文本执行操作。那么你在哪里

CREATE TABLE `accounts`
bash尝试作为命令执行
accounts
,并用命令的标准输出替换后引号中的文本。由于在您的路径中可能没有这样的命令,反引号部分将在输出中消失

尝试用反斜杠转义每个`字符,如下所示:

CREATE TABLE \`accounts\`

在没有看到您使用的确切命令的情况下,很难说如何修复此问题,但我怀疑shell正在对您的文本执行操作。那么你在哪里

CREATE TABLE `accounts`
bash尝试作为命令执行
accounts
,并用命令的标准输出替换后引号中的文本。由于在您的路径中可能没有这样的命令,反引号部分将在输出中消失

尝试用反斜杠转义每个`字符,如下所示:

CREATE TABLE \`accounts\`

如果您在shell中使用backticks运行东西,它将计算``中包含的命令。这样做的一种方法是使用这样的单引号:

$ echo '   USE vsftpd;
    CREATE TABLE `accounts` (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `username` VARCHAR( 30 ) NOT NULL ,
    `pass` VARCHAR( 50 ) NOT NULL ,
    UNIQUE (
    `username`
    )

) ENGINE = MYISAM ;

quit;
' > file.sql

$ more file.sql # verify content is correct

如果您在shell中使用backticks运行东西,它将计算``中包含的命令。这样做的一种方法是使用这样的单引号:

$ echo '   USE vsftpd;
    CREATE TABLE `accounts` (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `username` VARCHAR( 30 ) NOT NULL ,
    `pass` VARCHAR( 50 ) NOT NULL ,
    UNIQUE (
    `username`
    )

) ENGINE = MYISAM ;

quit;
' > file.sql

$ more file.sql # verify content is correct

不管怎样,我想我现在可以发布整个事情,以防其他人使用vsftpd,而你帮了我。以下是虚拟用户使用mysql进行vsftpd的脚本。除了创建新用户之外,这里的所有内容都可以通过下面给出的内容了解如何编写:

#!/bin/bash

while [[ "$yn" != "Yes" && "$yn" != "Y" && "$yn" != "y" && "$yn" != "yes" ]]; do
echo "name for your root password for MySQL"
read rpsql
echo "name for your primary FTP user"
read puftp
echo "what's you ftp password?"
read pftp
echo "what's the IPaddress of this server?"
read fip
echo "What is the Hostname of this server?" 
read fhost
    echo "You have entered $rpsql as your MySQL password"
    echo "You have entered $puftp as your FTP user"
    echo "You have entered $pftp as your Primary FTP password"
    echo "You have entered $fip as your IP address"
    echo "You have  entered $fhost as your hostname"
    echo "Are all of these correct? (Yes or No)"
      read yn
done

echo '######################################################################'
echo '##### Installing, configuring, and creating FTP Users and Shares #####'
echo '######################################################################'

apt-get install vsftpd libpam-mysql mysql-client phpmyadmin

mysqladmin -h nexwrxdemo.com -u root password $rpsql

echo 'CREATE DATABASE vsftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO '$puftp'@'localhost' IDENTIFIED BY '$pftp';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO '$puftp'@'localhost.localdomain' IDENTIFIED BY '$pftp';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO '$puftp'@'$fip' IDENTIFIED BY '$pftp';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO '$puftp'@'$fhost' IDENTIFIED BY '$pftp';
FLUSH PRIVILEGES;

USE vsftpd;
    CREATE TABLE `accounts` (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `username` VARCHAR( 30 ) NOT NULL ,
    `pass` VARCHAR( 50 ) NOT NULL ,
    UNIQUE (
    `username`
    )

) ENGINE = MYISAM ;

quit; ' > vsftpd.db

echo "granting permissions to 'vsftpd' on database 'vsftpd'"

mysql -u root -p$rpsql < vsftpd.db 

echo "creating a non-privileged user called 'vsftp' (with the homedir /home/vsftpd) belonging to the group 'nogroup'"

useradd --home /home/$puftp --gid nogroup -m --shell /bin/false $puftp

echo "configuring vsftpd"
echo "backing up vsftpd config file"

cp -r -f -p /etc/vsftpd.conf /backups/
cat /dev/null > /etc/vsftpd.conf

echo 'listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
nopriv_user=vsftpd
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
guest_enable=YES
guest_username=vsftpd
local_root=/home/vsftpd/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd_user_conf
' > /etc/vsftpd.conf

mkdir /etc/vsftpd_user_conf

echo "backing up pam/vsftpd config file"

cp -r -f -p /etc/pam.d/vsftpd /orig-config/
cat /dev/null > /etc/pam.d/vsftpd

echo "auth required pam_mysql.so user=$puftp passwd=$psql host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
account required pam_mysql.so user=$puftp passwd=$psql host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2" > /etc/pam.d/vsftpd

/etc/init.d/vsftpd restart
#may be service vsftpd restart

echo "setting up ftp admin & standard users for websites" 
echo "adding new users to ftp database"
#/bin/bash
而[[“$yn”!=“Yes”&“$yn”!=“Y”&“$yn”!=“Y”&“$yn”!=“Yes”];做
echo“MySQL根密码的名称”
读取rpsql
echo“您的主要FTP用户的名称”
读取puftp
echo“你的ftp密码是什么?”
读取pftp
echo“此服务器的IP地址是什么?”
阅读fip
echo“此服务器的主机名是什么?”
读fhost
echo“您已输入$rpsql作为MySQL密码”
echo“您已输入$puftp作为您的FTP用户”
echo“您已输入$pftp作为您的主要FTP密码”
echo“您已输入$fip作为您的IP地址”
echo“您已输入$fhost作为主机名”
echo“所有这些都正确吗?(是或否)”
雷丁
完成
我们的35支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支###########################
echo“############安装、配置和创建FTP用户和共享”
我们的35支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支###########################
apt get install vsftpd libpam mysql mysql客户端phpmyadmin
mysqladmin-h nexwrxdemo.com-u root密码$rpsql
echo’创建数据库vsftpd;
将vsftpd.*上的选择、插入、更新、删除、创建、删除授予“$puftp”@“localhost”,由“$pftp”标识;
将vsftpd.*上的选择、插入、更新、删除、创建、删除授予“$puftp”@“localhost.localdomain”,由“$pftp”标识;
将vsftpd.*上的选择、插入、更新、删除、创建和删除授予“$puftp”@“$fip”,由“$pftp”标识;
将vsftpd.*上的选择、插入、更新、删除、创建、删除授予“$puftp”@“$fhost”,由“$pftp”标识;
同花顺特权;
使用vsftpd;
创建表“accounts”(
`id`INT非空自动增量主键,
`用户名'VARCHAR(30)不为空,
`pass`VARCHAR(50)不为空,
独特的(
`用户名`
)
)发动机=MYISAM;
退出;'>vsftpd.db
echo“授予对数据库“vsftpd”的“vsftpd”权限”
mysql-u root-p$rpsql/etc/vsftpd.conf
echo'倾听=是
匿名启用=否
本地_启用=是
写入\启用=是
本地_umask=022
dirmessage_enable=是
xferlog_enable=是
从\u端口\u 20连接\u=是
nopriv_user=vsftpd
chroot\u local\u user=是
安全\u chroot\u dir=/var/run/vsftpd
pam\u service\u name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
来宾_启用=是
来宾_用户名=vsftpd
本地根=/home/vsftpd/$USER
用户\子\令牌=$user
虚拟\u使用\u本地\u权限=是
user\u config\u dir=/etc/vsftpd\u user\u conf
'>/etc/vsftpd.conf
mkdir/etc/vsftpd_user_conf
echo“备份pam/vsftpd配置文件”
cp-r-f-p/etc/pam.d/vsftpd/orig-config/
cat/dev/null>/etc/pam.d/vsftpd
echo“auth required pam_mysql.so user=$puftp passwd=$psql host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
所需帐户pam_mysql.so user=$puftp passwd=$psql host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2“>/etc/pam.d/vsftpd
/etc/init.d/vsftpd重新启动
#可能是服务vsftpd重新启动
echo“为网站设置ftp管理员和标准用户”
echo“向ftp数据库添加新用户”

不管怎样,我想我现在可以发布整个事情,以防有人使用vsftpd,而你帮了我。以下是虚拟用户使用mysql进行vsftpd的脚本。除了创建新用户之外,这里的所有内容都可以通过下面给出的内容了解如何编写:

#!/bin/bash

while [[ "$yn" != "Yes" && "$yn" != "Y" && "$yn" != "y" && "$yn" != "yes" ]]; do
echo "name for your root password for MySQL"
read rpsql
echo "name for your primary FTP user"
read puftp
echo "what's you ftp password?"
read pftp
echo "what's the IPaddress of this server?"
read fip
echo "What is the Hostname of this server?" 
read fhost
    echo "You have entered $rpsql as your MySQL password"
    echo "You have entered $puftp as your FTP user"
    echo "You have entered $pftp as your Primary FTP password"
    echo "You have entered $fip as your IP address"
    echo "You have  entered $fhost as your hostname"
    echo "Are all of these correct? (Yes or No)"
      read yn
done

echo '######################################################################'
echo '##### Installing, configuring, and creating FTP Users and Shares #####'
echo '######################################################################'

apt-get install vsftpd libpam-mysql mysql-client phpmyadmin

mysqladmin -h nexwrxdemo.com -u root password $rpsql

echo 'CREATE DATABASE vsftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO '$puftp'@'localhost' IDENTIFIED BY '$pftp';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO '$puftp'@'localhost.localdomain' IDENTIFIED BY '$pftp';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO '$puftp'@'$fip' IDENTIFIED BY '$pftp';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO '$puftp'@'$fhost' IDENTIFIED BY '$pftp';
FLUSH PRIVILEGES;

USE vsftpd;
    CREATE TABLE `accounts` (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `username` VARCHAR( 30 ) NOT NULL ,
    `pass` VARCHAR( 50 ) NOT NULL ,
    UNIQUE (
    `username`
    )

) ENGINE = MYISAM ;

quit; ' > vsftpd.db

echo "granting permissions to 'vsftpd' on database 'vsftpd'"

mysql -u root -p$rpsql < vsftpd.db 

echo "creating a non-privileged user called 'vsftp' (with the homedir /home/vsftpd) belonging to the group 'nogroup'"

useradd --home /home/$puftp --gid nogroup -m --shell /bin/false $puftp

echo "configuring vsftpd"
echo "backing up vsftpd config file"

cp -r -f -p /etc/vsftpd.conf /backups/
cat /dev/null > /etc/vsftpd.conf

echo 'listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
nopriv_user=vsftpd
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
guest_enable=YES
guest_username=vsftpd
local_root=/home/vsftpd/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd_user_conf
' > /etc/vsftpd.conf

mkdir /etc/vsftpd_user_conf

echo "backing up pam/vsftpd config file"

cp -r -f -p /etc/pam.d/vsftpd /orig-config/
cat /dev/null > /etc/pam.d/vsftpd

echo "auth required pam_mysql.so user=$puftp passwd=$psql host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
account required pam_mysql.so user=$puftp passwd=$psql host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2" > /etc/pam.d/vsftpd

/etc/init.d/vsftpd restart
#may be service vsftpd restart

echo "setting up ftp admin & standard users for websites" 
echo "adding new users to ftp database"
#/bin/bash
而[[“$yn”!=“Yes”&“$yn”!=“Y”&“$yn”!=“Y”&“$yn”!=“Yes”];做
echo“MySQL根密码的名称”
读取rpsql
echo“您的主要FTP用户的名称”
读取puftp
echo“你的ftp密码是什么?”
读取pftp
echo“此服务器的IP地址是什么?”
阅读fip
echo“此服务器的主机名是什么?”
读fhost
echo“您已输入$rpsql作为MySQL密码”
echo“您已输入$puftp作为您的FTP用户”
echo“您已输入$pftp作为您的主要FTP密码”
echo“您已输入$fip作为您的IP地址”
echo“您已输入$fhost作为主机名”
回声