0

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 を使用したときに得られるものです (おそらく、何らかのスイッチが必要ですか?):

USE vsftpd;
CREATE TABLE  (
uid=0(root) gid=0(root) groups=0(root) INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
 VARCHAR( 30 ) NOT NULL ,
 VARCHAR( 50 ) NOT NULL ,
UNIQUE (

)
) ENGINE = MYISAM ;

quit;
4

3 に答える 3

2

使用しているコマンドを正確に確認せずにこれを修正する方法を言うのは難しいですが、シェルがテキストに対して逆引用符の置換を行っていると思われます。だからあなたが持っている場所

CREATE TABLE `accounts`

bash はコマンドとして実行を試みaccounts、逆引用符で囲まれたテキストをコマンドの標準出力に置き換えます。パスにそのようなコマンドはおそらくないので、逆引用符で囲まれたセクションは出力から消えます。

次のように、各 ` 文字をバックスラッシュでエスケープしてみてください。

CREATE TABLE \`accounts\`
于 2010-12-07T01:55:03.630 に答える
1

シェルでバッククォートを使用して実行すると、``で囲まれたコマンドが評価されます。したがって、それを行う1つの方法は、次のように一重引用符を使用することです。

$ 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
于 2010-12-07T01:57:45.110 に答える
0

とにかく、他の誰かが 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"
于 2010-12-07T02:15:15.417 に答える