今晚实验室的同学有一个需求,需要拷一下虚拟机A 中的文件: /usr/lib/i386-linux-gnu/libc.a
本来以为分分钟可以搞定的,结果折腾了一个多小时。在此记录一下吧。
这个虚拟机是别人提供的,给了个vmdx磁盘文件,创建了之后发现是read-only system,不知道是怎么做到的。因此创建文件什么的是不可能了。修改配置文件、安装软件也不行了。
虚拟机开了22端口,那么通过ssh传输文件吧。然而ssh登陆不上该虚拟机,why?因为想让root用户登陆得修改配置文件...
万幸的是,该虚拟机是联网的。那么curl传一下吧。
curl -F "file=@/usr/lib/i386-linux-gnu/libc.a" server_ip
接受脚本:
<?php
$inipath = php_ini_loaded_file();
if ($inipath) {
echo 'Loaded php.ini: ' . $inipath;
} else {
echo 'A php.ini file is not loaded';
}
if (isset($_FILES["file"]["name"])) {
echo "success\n";
$name = $_FILES["file"]["name"];
$tmp_name = $_FILES['file']['tmp_name'];
$error = $_FILES['file']['error'];
echo "name is \n";
echo $name;
echo "\necho done";
echo "\nname is \n";
echo $tmp_name;
echo "\necho done";
if (!empty($name)) {
$location = 'D:/.../WWW/';
if (move_uploaded_file($tmp_name, $location.$name)){
echo 'Uploaded';
}
} else {
echo 'please choose a file';
}
}else{
echo "error";
}
?>
起初并没有接收到到文件,但是wireshark抓包发现文件确实已经传输了。定位到php脚本发现$tmp_name为空,原因在于这个文件太大了,3.6M,php默认配置最大上传大小是2M,因此修改php.ini解决:
; Maximum allowed size for uploaded files.
upload_max_filesize = 8M
; Must be greater than or equal to upload_max_filesize
post_max_size = 8M
php脚本是网上搜的,好久不搞web了,真是太菜了。